Salve,
ragazze/i ho un problema, non capisco la ricorsione.
E' ormai da 3 mesi che ci combatto e non riesco a capirla davvero a fondo.
conosco ormai tutti i siti (universitari e non) dove spiegano la ricorsione. Ma non riesco ad assimilarne il concetto.
Sto studiando col libro di Deitel e sono andato avanti fino ad arrivare al passaggio dei vettori alle funzioni, ma resto sempre con questo buco che non riesco a riempire.
Neppure il fattoriale capisco come funziona...figuriamoci Fibonacci.
Non è che qualcuno potrebbe spiegarmelo passo per passo in base a questo codice?
#include <stdio.h>
#include <stdlib.h>
long factorial( long number );
main()
{
int i;
for (i = 0; i <= 10; i++)
printf("%2d! = %ld\n", i, factorial(i));
return 0;
}
long factorial( long number )
{
if (number <= 1)
return 1;
else
return (number * factorial(number - 1));
}
Principalmente non capisco una cosa...
quando il compilatore legge la riga
return (number * factorial(number - 1));
dovrebbe richiamare di nuovo la funzione e decrementare il numero.
Ma quando "number" arriva ad uno e il compilatore va a rileggere la funzione da capo non dovrebbe
ritornare 1 basandosi su questa riga ?
if (number <= 1)
return 1;
e quindi la funzione dovrebbe ritornare sempre "1".
O mi sbaglio ?