2008/09 – Fase scolastica – 06

Si consideri la seguente funzione:

Function ricorsiva(N: Integer): Integer;
Begin
   If(N > 1) Then
      ricorsiva:=N*ricorsiva(N-1)
   Else
      ricorsiva:=1
End;

Indicare qual è il valore restituito dall’invocazione di ricorsiva(5)

Risposte:

  1. 5
  2. 20
  3. 120
  4. nessuno dei precedenti.

Soluzione: c (120).


Soluzione

Dato un intero N non negativo, N! denota il fattoriale di N così definito:

N! = 1 se N è = 0,

altrimenti

N! = N*(N-1)*(N-2)…*2*1

ovvero, se N è positivo allora il fattoriale di N è dato dal prodotto di N per tutti gli interi positivi minori di N).

Sulla base della definizione di fattoriale, possiamo facilmente verificare che la funzione ricorsiva() calcola il fattoriale di N: il risultato di ricorsiva(5) è dunque:

5! = 5*4*3*2*1 = 120