La secuencia de Fibonacci es, por definición, la secuencia entera en la que cada número después de los dos primeros es la suma de los dos números anteriores. Simplificar:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,…
Tiene muchas aplicaciones en matemáticas e incluso en el comercio (sí, lo leíste bien: el comercio), pero ese no es el objetivo de este artículo. Mi objetivo hoy es mostrarte cómo puedes calcular cualquier término de esta serie de números en cinco lenguajes de programación diferentes usando funciones recursivas.
Las funciones recursivas son aquellas funciones que, básicamente, se llaman a sí mismas.
Quiero señalar que este no es el mejor método para hacerlo; de hecho, podría considerarse el método más básico para este propósito. Esto se debe a que la potencia informática necesaria para calcular términos más amplios de la serie es inmensa. El número de veces que se llama a la función provoca un desbordamiento de pila en la mayoría de los idiomas.
De todos modos, para los propósitos de este tutorial, comencemos.
En primer lugar, pensemos en cómo se verá el código. Incluirá:
· Una función recursiva F (F de Fibonacci): para calcular el valor del siguiente término.
· Nada más: te advertí que era bastante básico.
Nuestra función se llevará a n como una entrada, que se referirá a la n º término de la sucesión que queremos ser computado. Entonces, F (4) debería devolver el cuarto término de la secuencia.
Planeémoslo. El código, independientemente del idioma, debería verse así:
function F(n) if n = 0
return 0 if n = 1
return 1 else
return F(n-1) + F(n-2)
Nota: el término 0 de la secuencia se considerará 0, por lo que el primer término será 1; el segundo, 1; el tercero, 2; y así. Usted lo consigue.
Analicemos la función por un momento. Si obtiene 0 como entrada, devuelve 0. Si obtiene 1, devuelve 1. Si obtiene 2… Bueno, en ese caso cae en la instrucción else, que llamará a la función nuevamente para los términos 2-1 ( 1) y 2–2 (0). Eso devolverá 1 y 0, y se agregarán los dos resultados, devolviendo 1. Perfecto.
Ahora puede ver por qué las funciones recursivas son un problema en algunos casos. Imagina que quieres el término 100 de la secuencia. La función se llamaría a sí misma para los términos 99 y 98, que a su vez llamarían a la función nuevamente para los términos 98 y 97, y 97 y 96 ... y así sucesivamente. Sería muy lento.
¡Pero la buena noticia es que realmente funciona!
Así que comencemos con los diferentes idiomas. No daré muchos detalles (en realidad, ningún detalle) para mejorar su experiencia de lectura. De todos modos, no hay mucho que detallar.
Saltemos a eso:
Pitón
def F(n): if n == 0:
return 0 if n == 1:
return 1 else:
return F(n-1) + F(n-2)
Rápido
func F(_ n: Int) -> Int { if n == 0 { return 0
} if n == 1 { return 1
} else { return F(n-1) + F(n-2)
}}
JavaScript
function F(n) { if(n == 0) { return 0;
} if(n == 1) { return 1;
} else { return F(n-1) + F(n-2);
}}
Java
public static int F(int n) { if(n == 0) { return 0;
} if(n == 1) { return 1;
} else { return F(n-1) + F(n-2);
}}
C ++
int F(int n) { if(n == 0) { return 0;
} if(n == 1) { return 1;
} else { return F(n-1) + F(n-2);
}}
Y eso es. Elegí estos idiomas solo por popularidad, o al menos porque estos 5 son los más comunes que uso. No están en ningún orden en particular. Se podrían clasificar por dificultad de sintaxis, en mi opinión, desde Python (el más fácil) hasta C ++ (el más difícil). Pero eso depende de su opinión personal y de su experiencia con cada idioma.
Espero que les haya gustado este artículo y, si tienen alguna pregunta / recomendación o simplemente quieren saludar, ¡comenten a continuación!