Saltar al contenido principal

Secuencia de Fibonacci: El nuevo Hola Mundo

· 7 min de lectura
Oscar Adrian Ortiz Bustos

Introducción

No me van a dejar mentir, cuando todos vamos a aprender algún nuevo lenguaje de programación, por lo general nos encontramos escribiendo el simplón ¨Hola Mundo¨. Y no me malinterpreten, esta es una excelente opción cuando a penas se está iniciando en el mundo de la programación, sin embargo, ̉¿que pasaría si reemplazáramos ese típico primer programa por algo que no solo nos saludara, sino que también nos desafíe en nuestra comprensión lógica y matemática desde el principio?.

La secuencia de Fibonacci se presenta como una excelente alternativa para introducirnos en una nueva sintaxis de programación. En este artículo, exploraremos como es que la secuencia de Fibonacci no solo enriquece nuestro aprendizaje inicial, sino que también nos proporciona una ventana hacia la elegancia y profundidad que la programación puede ofrecer., te mostraré el por que lo considero el nuevo Hola Mundo para los programadores.

¿Por qué la secuencia de Fibonacci?

La secuencia de Fibonacci es una serie de números donde cada número es la suma de los dos números anteriores. Representada en un bloque de código, la secuencia de Fibonacci se vería algo así:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

Matemáticamente, la secuencia de Fibonacci se define como:

xn = xn-1 + xn-2

Donde x0 = 0 y x1 = 1.

Como podemos ver es necesario conocer el valor de memoria anterir para poder calcular el siguiente número en la secuencia. Para lograr lo anterior es necesario conocer la manera en la que el lenguaje de programación que se quiere aprender maneja las variables, la recursividad y los bucles, y en ocasiones hasta el uso correcto de la memoria.

¿Cómo desarrolla la lógica?

Cuando elegimos implementar la secuencia de Fibonacci como uno de los primeros programas en un nuevo lenguaje de programación, no solamente estaremos poniendo a prueba nuestra comprensión básica de la sintaxis, sino que también exhorta a los programadores, a pensar en cómo manejar valores que dependen de los resultados anteriores. Este enfoque promueve un pensamiento lógico más profundo y el entendimiento de los conceptos fundamentales como la recursividad y la iteración, así como la importancia de la eficiencia en el código.

Debo de deslindarme de una vez y decir que este enfoque está principalmente pensado para quienes ya sabemos de programación, es decir, si ya se python, puedo adentrarme a otro lenguaje de programación como GO o Rust y comenzar a escribir la secuencia de Fibonacci, pero si eres un principiante, te recomendaría que comiences con el clásico ¨Hola Mundo¨.

Recordemos que la programación es la resolución de problemas mediante código, por ende, necesitamos desarrollarla lógica primero, una vez con lógica, podremos adaptar cualquier lenguaje de programación a nuestras necesidades.

Pros y contras

Pros

  1. Desafío Intelectual: Introduce a los aprendices a conceptos avanzados como la recursividad y la iteración desde el principio.

  2. Comprensión profunda: Fomenta un entendimiento más profundo de la lógica de programación y cómo manejar dependencias entre valores.

  3. Versatilidad Educativa: Ofrece una manera creativa de enseñar sintaxis y estructuras de control en múltiples lenguajes de programación.

  4. Aplicaciones Prácticas: Aunque teórica, la secuencia de Fibonacci tiene aplicaciones prácticas en algoritmos de optimización y matemáticas computacionales.

  5. Motivación e interés: Puede aumentar la motivación de los aprendices al presentar un desafío interesante desde el inicio de su aprendizaje.

Contras

  1. Complejidad Inicial: Puede resultar abrumador para quienes están comenzando, ya que la recursividad y el manejo de dependencias pueden ser difíciles de entender al principio.

  2. Falta de Aplicación Directa: Aunque educativo, algunos podrían argumentar que la secuencia de Fibonacci no tiene una aplicación práctica directa en todos los proyectos de programación.

  3. Posible Pérdida de Foco: Podría desviar la atención de otros conceptos básicos que son fundamentales para la comprensión inicial de la programación.

  4. Curva de Aprendizaje: Requiere tiempo adicional para entender completamente cómo se calcula y se implementa la secuencia de Fibonacci en diferentes lenguajes.

  5. Variedad de Alternativas: Existen otras prácticas educativas, como los problemas simples de lógica, que podrían ser más accesibles y efectivas para introducir a los principiantes en la programación.

Ejemplos

Javascript

function fibonacci(n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}

// Ejemplo de uso
const numTerms = 10; // Número de términos de la secuencia a mostrar
console.log(`Secuencia de Fibonacci en JavaScript de ${numTerms} términos:`);
for (let i = 0; i < numTerms; i++) {
console.log(fibonacci(i));
}

Python

def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)

# Ejemplo de uso
num_terms = 10 # Número de términos de la secuencia a mostrar
print(f"Secuencia de Fibonacci en Python de {num_terms} términos:")
for i in range(num_terms):
print(fibonacci(i))

Go

package main

import "fmt"

func fibonacci(n int) int {
if n <= 1 {
return n
}
return fibonacci(n-1) + fibonacci(n-2)
}

func main() {
numTerms := 10 // Número de términos de la secuencia a mostrar
fmt.Printf("Secuencia de Fibonacci en Go de %d términos:\n", numTerms)
for i := 0; i < numTerms; i++ {
fmt.Println(fibonacci(i))
}
}

Java

public class Fibonacci {

public static int fibonacci(int n) {
if (n <= 1) {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}

public static void main(String[] args) {
int numTerms = 10; // Número de términos de la secuencia a mostrar
System.out.printf("Secuencia de Fibonacci en Java de %d términos:\n", numTerms);
for (int i = 0; i < numTerms; i++) {
System.out.println(fibonacci(i));
}
}
}

Rust

fn fibonacci(n: u32) -> u32 {
if n <= 1 {
return n;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}

fn main() {
let num_terms = 10; // Número de términos de la secuencia a mostrar
println!("Secuencia de Fibonacci en Rust de {} términos:", num_terms);
for i in 0..num_terms {
println!("{}", fibonacci(i));
}
}

Bash

#!/bin/bash

fibonacci() {
if [ $1 -le 1 ]; then
echo $1
else
echo $(( $(fibonacci $(($1-1))) + $(fibonacci $(($1-2))) ))
fi
}

# Ejemplo de uso
num_terms=10 # Número de términos de la secuencia a mostrar
echo "Secuencia de Fibonacci en Bash de $num_terms términos:"
for (( i=0; i<num_terms; i++ )); do
echo $(fibonacci $i)
done

PHP

<?php

function fibonacci($n) {
if ($n <= 1) {
return $n;
} else {
return fibonacci($n - 1) + fibonacci($n - 2);
}
}

// Ejemplo de uso
$numTerms = 10; // Número de términos de la secuencia a mostrar
echo "Secuencia de Fibonacci en PHP de $numTerms términos:\n";
for ($i = 0; $i < $numTerms; $i++) {
echo fibonacci($i) . "\n";
}

Conclusión

Al explorar la secuencia de Fibonacci como una alternativa al clásico "Hola Mundo", hemos descubierto mucho más que una simple serie matemática. Esta Elección nos invita a adentrarnos en las profundidades de la lógica y la programación desde el primer momento. Y si, admito que es eso puede ser una espada de doble filo, ya que si alguien completamente nuevo intenta hacerlo, será algo bastante frustrante e incluso podría desistir.

Como ya saben en La Cueva del NeanderTech buscamos siempre salir de lo ordinario, ofreciendo a mis cibernícolas una perspectiva que enriquece tanto el aprendizaje inicial como el entendimiento profundo de los conceptos fundamentales. Así, mientras muchos comienzan con un simple "Hola Mundo", nosotros nos aventuramos con Fibonacci, abriendo una ventana hacia la belleza y la complejidad que la programación tiene para ofrecer.

Auto exigencia, constancia y disciplina, son las claves para alcanzar el éxito en cualquier ámbito de la vida.

— Anónimo

Referencias