Fibonacci fue un matemático italiano nacido el año 1170 y cuyo nombre real es Leonardo de Pisa.
Se dice que mientras intentaba resolver un problema de cálculo del número de hijos que tienen los conejos a lo largo del tiempo notó una sucesión interesante y era que por lo general en una granja el número de hijos de una pareja de conejos sigue una sucesión de números particular, donde la última camada es igual a la suma de las dos anteriores.
En palabra sencillas: La sucesión sería la siguiente:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
Teniendo la única consideración adicional que el primer número es 0 y el segundo 1, y luego calculando los demás a partir de la suma de los dos números anteriores a cada elemento de la serie.
La imagen de la portada de esta entrada del blog guarda una relación muy interesante con esta sucesión de números, te animo a que la investigues.
Algoritmo
Entonces imaginemos que se nos pide hacer un algoritmo en cualquier lenguaje de programación que represente esta sucesión de números.
Vamos a resolverlo utilizando el lenguaje C#
public static void Fibonacci(int numberElements)
{
int[] arreglo = new int[numberElements];
arreglo[0] = 0;
arreglo[1] = 1;
for(int i = 2; i < numberElements; i++)
{
arreglo[i] = arreglo[i - 1] + arreglo[i - 2];
}
Console.WriteLine(string.Join(",",arreglo));
}
Aquí vamos a analizar lo que estamos haciendo:
- Primero hacemos un método o función que reciba un parámetro, este número será la cantidad de números de la sucesión de Fibonacci que se quiera mostrar.
- Como verás, luego creamos un array con este tamaño.
- Asigno en código duro los dos primeros elementos del array, ya que así está definida esta serie
- Voy iterando por cada elemento de la serie, iniciando en 2 (ya que los índices 0 y 1 están ya asignados)
- El valor del elemento actual de la serie será igual a la suma de los dos anteriores
- Retorno el arreglo formateado con comas.
Sencillo verdad? Si lo ejecutamos en un programa de consola, y por ejemplo quiero los 20 primeros números de la serie de Fibonacci entonces obtengo lo que busco! 😉
Y así es como se resuelve este algoritmo, no es muy complejo pero como siempre digo, si no tienes el hábito de resolver algoritmos y tienes que plantear una situación como esta sucesión ya sea en tu trabajo del día a día por distintos motivos, o en una entrevista técnica, no te va a salir o te tomará tiempo.
Recuerda que esta entrada es de la serie de artículos Algoritmos notables, los cuales los subo a este repo, puedes visitarlo y descubrir más algoritmos 😊
Si esta entrada te ha gustado entonces considera compartirla crack! 😊
Hola. Muy interesante. ¿Podrías hacer un artículo sobre el algoritmo para Extensiones de Fibonacci por favor?
Hola Oscar, perdón por contestar recién, en cuanto a las extensiones y retrocesos de fibonacci te recomiendo este artículo https://hmarkets.com/es/como-usar-retrocesos-y-extensiones-de-fibonacci/ me parece completo e interesante. Sobre lo de sus algoritmos, no he investigado el tema a profundidad, lo haré. Saludos.
Hola, a mi no me funciona, yo el número de elementos a mostrar lo tengo como la variable numero por lo que he sustituido numberElements por numero y arreglo por array pero ahora tengo 17 fallos
Hola Luis, pues si tienes duda puedes descargar o ver el código en mi repo de Github, el link lo encuentras al final del artículo. Quizá el problema está en cómo plasmas y ejecutas el código y no en la sintaxis ya que el código ha sido probado 🙌 Espero lo puedas solucionar, éxitos dev.