Scusate se mi accodo anche io. La mia richiesta è leggermente diversa in quanto sto cercando ci capire un codice di linguaggio C per quanto riguarda la ricorsione di Fibonacci. Il codice è il seguente:
#include <stdio.h>
#include <stdlib.h>
long fibonacci (long);
int main(int argc, char *argv[])
{
int n;
printf("Calcolo numero di Fibonacci - Digita un numero naturale: ");
scanf("%d", &n);
printf("Il numero di Fibonacci nella posizione %d e': %ld\n", n, fibonacci (n));
system("PAUSE");
return 0;
}
long fibonacci (long i)
{
if (i==0)
return 0;
else if (i==1)
return 1;
else
return fibonacci(i-1) + fibonacci(i-2);
}
Quello che voglio capire è come fa il compilatore a sapere che posizioni hanno i numeri che inserisco in base al calcolo della funzione.
Mi spiego meglio, se io metto il numero 13 mi da risultato 233, il chè è corretto, ma come e
dove lo fa il calcolo?
Nella mia ignoranza ho pensato che fibonacci(13-1) + fibonacci(13-2) = 12 + 11 = 23, mentre il compilatore fa un altro tipo di calcolo che non riesco a notare nel codice.
Quello che mi serve sapere è l'operazione, graficamente nascosta, che fa l' ultimo return (sicuramente è un ciclo).