Piero Scotto - C141 C14 #7 Do While – Break Funzioni ricorsive
Finalità del corso Piero Scotto - C142
3
4
5
6
7
8
9
10
Piero Scotto - C1411
Piero Scotto - C1412
Piero Scotto - C1413
Piero Scotto - C1414
Piero Scotto - C1415
Piero Scotto - C1416
Piero Scotto - C1417
Piero Scotto - C1418 7OL Esercizio N° 19 Olimpiadi 2010– La risposta vale 3 punti. Si consideri il seguente frammento di programma: int succ(int i) { if (i<=2) return(1); else return(3*succ(i-1)+2*succ(i-2)-succ(i-3)); } main() { printf("num=%d\n",succ(7)); } Cosa viene visualizzato a video dallesecuzione di main()?
Piero Scotto - C1419 int succ(int i) { if (i<=2) return(1); else return(3*succ(i-1)+2*succ(i-2)-succ(i-3)); } main() { printf("num=%d\n",succ(7)); } La funzione succ è ricorsiva perché richiama se stessa. Per capirne il funzionamento possiamo inserire il numero 7 (che rappresenta i)
Piero Scotto - C1420 int succ(int i) { if (i<=2) return(1); else return(3*succ(i-1)+2*succ(i-2)-succ(i-3)); } se i=7 (3*succ(6)+2*succ(5)-succ(4)) Ora ciascuna succ(n) richiama se stessa: succ(6)=3*succ(5)+2*succ(4)-succ(3) succ(5)=3*succ(4)+2*succ(3)-succ(2) con succ(2)=1 succ(4)=3*succ(3)+2*succ(2)-succ(1) con succ(1)=1 succ(3)=3*succ(2)+2*succ(1)-succ(0) con succ(0)=1 succ(3)=3*1+2*1-1=4 da cui si calcolano le altre