Non capisco questo esempio di ricorsione:
PS:
Non so fare le parentesi graffe e al posto di queste ci metto le quadre.
#include <iostream>
using namespace std;
int fact(int n);
int main()
int A
[cout << "inserisci un numero intero:\n";
cin >> A
cout << "il fattoriale di "<< A << " è :" << fact(A);
cout <<"\n";
int fact (int n)
[
int ans;
if (n==1) return(1);
ans = fact(n-1)*n;
return (ans);
]
return 0;
]
DOMANDA:
allora,
se ad A do il valore di 1,una volta entrato nella funzione fact la condizione if sarà verà e allora "attiverò" l'istruzione return(1) che restituirà a fact il valore di 1 e mi apparirà:
il fattoriale di 1 è 1
SUPPONIAMO ADESSO che A sia 4:
entro come al solito all'interno della funzione fact ma questa volta l'if non è verificato.
salto dunque l'istruzione return(1) e vado sotto.
Cosa trovo sotto???
trovo:
ans = fact(n-1)*n;
return (ans)
avrò allora,per n=4:
ans=fact(4-1)*4 cioè ans=fact(3)*4
ma a questo punto ,richiamando fact da dove riparto?
dall'inizio del blocco(riverificando la condizione if) oppure rimango in loop sull'istruzione ans = fact(n-1)*n?
Mi sfugge il meccanismo!!
potete descrivermelo step per step e farmi notare quale istruzione devo tenere sott'occhio istante per istante??
Grazie mille