Salta ai contenuti. | Salta alla navigazione

Strumenti personali

Ricorsione, 13/12/2004

Importante

nell'esame scritto del 13/12/2004 esercizio 3 (ricorsione) provando la funzione data nella soluzione, mi sono accorto che non funziona per tutti i casi. Le invio il sorgente dove all'interno c'è una funzione fatta da me. ...è un mio errore? o la soluzione è veramente sbagliata?

//j è il numero di elementi dell'array
int prodpos(int a[],int n,int j)
{ if (j<0) return 1;
else
if(a[j]<=n && a[j]>0)
return a[j]*prodpos(a,n,j-1);
else
return prodpos(a,n,j-1);
}
void main(){
int a[10]={6,0,6,-2,6,6,5,6,6,5}
printf("Mia soluzione: %d",prodpos(a,5,9));
}

Mi sembra che lei abbia svolto un esercizio diverso da quello richiesto. Lei ha calcolato

il prodotto degli elementi positivi dell'array con valore minore o uguale ad n,
mentre era richiesto
il prodotto degli elementi positivi dell'array con indice minore o uguale ad n.
Nell'esempio che mi ha mandato, a[2] ha come indice 2 e come valore 6. Poiche' 2≤5 e 6>0, il valore 6 va inserito nel prodotto.