Si consideri la seguente funzione:
Function ricorsiva(x: Integer): Integer; Begin If(x = 1) Then ricorsiva:=x else ricorsiva:=ricorsiva(x-1)+2*x-1; End;
Dire cosa restituisce l’invocazione di ricorsiva(10)
Risposte:
- 28
- 99
- 101
- nessuna delle precedenti.
Soluzione: d (100).
Soluzione
La funzione ricorsiva() calcola il quadrato di x; osserviamo infatti che vale la seguente uguaglianza:
x2 = (x-1)2+2x-1Se non vogliamo ricorrere alla predetta uguaglianza, possiamo eseguire la funzione per 10 volte, sommando 1 (il valore di ricorsiva di 1) poi 3 (il valore di ricorsiva di 2) quindi 5 e così via.