C14 #7
Do While – Break
Funzioni ricorsive
Piero Scotto - C14
1
Finalità del corso
Finalità del corso
Finalità del corso
Finalità del corso
Finalità del corso
Piero Scotto - C14
2
Piero Scotto - C14
3
Piero Scotto - C14
4
Piero Scotto - C14
5
Piero Scotto - C14
6
Piero Scotto - C14
7
Piero Scotto - C14
8
Piero Scotto - C14
9
Piero Scotto - C14
10
Piero Scotto - C14
11
Piero Scotto - C14
12
Piero Scotto - C14
13
Piero Scotto - C14
14
Piero Scotto - C14
15
Piero Scotto - C14
16
Piero Scotto - C14
17
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 dall’esecuzione di
main()?
Piero Scotto - C14
18
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 - C14
19
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
Piero Scotto - C14
20
Scarica

Presentazione _do_while_break.ppt