Cosa stampa il seguente programma?
Program cosa(Input, Output); Function calcola(n: Integer): Integer; Begin If(n = 1) Then calcola:=1 Else If(n = 2) Then calcola:=3 Else If(n = 3) then calcola:=n+calcola(n-1) Else calcola:=n+calcola(n-1)+calcola(n-2) End; Begin Writeln(calcola(6)); End.
Risposte:
- 41
- 45
- 49
- nessuna delle precedenti.
Soluzione: d (il programma stampa 43).
Soluzione
Tratta da: Materiale didattico 2008
Esempio di funzione ricorsiva.
Si tenga presente che per i valori da 1 a 2 il risultato è restituito direttamente:
- calcola(1)=1
- calcola(2)=3
La ricorsione entra in gioco da 3 in poi:
- calcola(3)=3+calcola(2) =3+3 =6
- calcola(4)=4+calcola(3)+calcola(2)=4+6+3 =13
- calcola(5)=5+calcola 4)+calcola(3)=5+13+6 =24
- calcola(6)=6+calcola(5)+calcola(4)=6+24+13=43.