[Algoritmi] Esercizio troppo facile? Divide&Conq prodotto
Ciao a tutti! Ho fatto un esercizio che mi sembra troppo semplice per la verifica in cui si trovava. Forse è stato buttato come chance di recupero. Ecco la consegna:
Dato un vettore
di n interi, si vuole calcolarne la produttoria
. Si scriva lo pseudo-codice di un algoritmo di complessità ottima che utilizzi la tecnica divide-et-impera con partizione bilanciata dei dati.
Io l'ho scritto in java per abitudine. Però se n è dispari bisogna fare un controllo perché non si può dividere in due parti. Vi sembra giusto? O manca qualcosa?
Dato un vettore
di n interi, si vuole calcolarne la produttoria
. Si scriva lo pseudo-codice di un algoritmo di complessità ottima che utilizzi la tecnica divide-et-impera con partizione bilanciata dei dati.Io l'ho scritto in java per abitudine. Però se n è dispari bisogna fare un controllo perché non si può dividere in due parti. Vi sembra giusto? O manca qualcosa?
- Codice: Seleziona tutto
public static int getProduct(int[] v)
{
int prod=v[length-1]; //tanto lo sovrascrivo n è pari
if(v.length%2=0)
prod = product(v,0,v.length-1);
else
prod *= product(v,0,v.length-2);
return prod;
}
private static int product(int[] a, int j, int i)
{
if(i==j+1)
return a[j]*[i];
int mid=(j+i)/2;
return product(a, i, mid)*product(a, mid+1, j);
}