voy a explicar lo que está haciendo su PC al ejecutar ese trozo de código con un ejemplo:
Imagine que está de pie en una habitación muy grande. En la habitación contigua a esta sala, tienes enormes cantidades de papel, bolígrafos y mesas. Ahora vamos a calcular fibonacci (3):
Tomamos una mesa y la colocamos en algún lugar de la habitación. Sobre la mesa colocamos un papel y escribimos "n = 3" en él. Entonces nos preguntamos "hmm, ¿3 es igual a 0 o 1?". La respuesta es no, así que haremos "return fibonacci (n-1) + fibonacci (n-2);".
Hay un problema, sin embargo, no tenemos idea de lo que "fibonacci (n-1)" y "fibonacci (n-2)" realmente hacen. Por lo tanto, tomamos dos tablas más y las colocamos a la izquierda y a la derecha de nuestra tabla original con un documento sobre las dos, diciendo "n = 2" y "n = 1".
Comenzamos con la tabla de la izquierda, y nos preguntamos "¿es 2 igual a 0 o 1?". Por supuesto, la respuesta es no, así que una vez más colocaremos dos tablas al lado de esta tabla, con "n = 1" y "n = 0" en ellas.
¿Siguen SIGUIENDO? Esto es lo que la habitación se parece a:
n = 1
n = 2 n = 3 n = 1
n = 0
Partimos de la mesa con "n = 1" , y bueno, 1 es igual a 1, ¡así que podemos devolver algo útil! Escribimos "1" en otro papel y volvemos a la tabla con "n = 2" en él. Colocamos el papel sobre la mesa e iremos a la otra mesa, porque aún no sabemos qué vamos a hacer con esa otra mesa.
"n = 0", por supuesto, devuelve 1 también, así que escribimos eso en un papel, regresemos a la tabla n = 2 y coloquemos el papel allí. En este punto, hay dos documentos en esta tabla con los valores de retorno de las tablas con "n = 1" y "n = 0" en ellos, por lo que podemos calcular que el resultado de esta llamada al método es en realidad 2, por lo que escríbalo en un papel y póngalo sobre la mesa con "n = 3" en él.
A continuación, vamos a la tabla con "n = 1" en todo el camino a la derecha, y podemos escribir inmediatamente 1 en un papel y ponerlo sobre la mesa con "n = 3" en él. Después de eso, por fin tenemos suficiente información para decir que Fibonacci (3) devuelve 3.
Es importante saber que el código que está escribiendo no es más que una receta. Todo lo que hace el compilador es transformar esa receta en otra receta que tu PC pueda entender. Si el código es completamente falso, como esto:
public static int NotUseful()
{
return NotUseful();
}
simplemente se bucle sin fin, o como en mi ejemplo, podrás seguir poniendo más y más tablas sin tener que llegar a ninguna parte útil. A su compilador no le importa lo que realmente hacen los fibonacci (n-1) o fibonacci (n-2).
¿Qué libro estás leyendo actualmente? – Carlos