Funzione ricorsiva fibonacci
ciao sto studiando la funzione ricorsiva con la funzione di fibonacci:
int fibonacci(int num){
if(num<=1)
return num;
return (fibonacci(num-1)+fibonacci(num-2));
}
solo che non capisco come funziona ad ogni ciclo, potete aiutarmi nel capire dove sbaglio????
spiego il mio ragionamento:
se chiamo la funzione ricercando il numero 5, avro:
fibonacci (5-1) +fibonacci (5-2)
fibonacci (4-1) + fibonacci(3-2)
fibonacci (3-1) + fibonacci (1-2)
scusate ma non capisco come fa a venire 5 (il risultato dell'operazione)
grazie a chi gentilmente vuole darmi una mano
int fibonacci(int num){
if(num<=1)
return num;
return (fibonacci(num-1)+fibonacci(num-2));
}
solo che non capisco come funziona ad ogni ciclo, potete aiutarmi nel capire dove sbaglio????
spiego il mio ragionamento:
se chiamo la funzione ricercando il numero 5, avro:
fibonacci (5-1) +fibonacci (5-2)
fibonacci (4-1) + fibonacci(3-2)
fibonacci (3-1) + fibonacci (1-2)
scusate ma non capisco come fa a venire 5 (il risultato dell'operazione)
grazie a chi gentilmente vuole darmi una mano


Risposte
Devi immaginare le chiamate effettuate dall'algoritmo in un cosiddetto "Albero di ricorsione".
Qui un esempio:
Qui un esempio:

ci ero arrivato dopo ore di ragionamento ma il tuo grafico mi ha aiutato ugualmente!
grazie
grazie