Serie de Fibonacci 👨‍💻

Devuelve n elementos de la serie de Fibonacci

21.05.2022 a las 12:46

Serie de Fibonacci 👨‍💻

Serie de Fibonacci 👨‍💻

Devuelve n elementos de la serie de Fibonacci

Me he encontrado por Internet que un algoritmo que suelen pedir mucho en las pruebas técnicas para junior es devolver la serie de Fibonacci de n elementos deseados.


Vamos a hacerlo con y sin recursividad.

¿Qué es la serie o sucesión de Fibonacci?

Es una serie de números que comienza con el 0 y con el 1 y el resto de números de la serie se calcula como la suma de los 2 números anteriores de la serie.


  • 0
  • 1
  • 0+1=1
  • 1+1=2
  • 1+2=3
  • 3+2=5
  • 5+3=8
  • ...

Te dejo aquí otra explicación por si no te ha quedado claro.

Solución sin recursividad

Estamos suponiendo que la entrevista es para un Junior, si fuera para Senior lo resolvería usando TDD. Es decir, el código del algoritmo sería el mismo pero incluiría un fichero con pruebas unitarias.

const itemsDesired = 20;
const fibonacci = [0,1];
while (fibonacci.length<itemsDesired){
    const newFibonacciItem = fibonacci[fibonacci.length-2] + fibonacci[fibonacci.length-1]
    fibonacci.push(newFibonacciItem);
}
console.log(fibonacci); //[LOG]: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
  

Solución con recursividad

const itemsDesired = 20;
const fibonacci = [0,1];

function getFibonacci():number[]{
    if (fibonacci.length===itemsDesired) return fibonacci;
    const newFibonacciItem = fibonacci[fibonacci.length-2] + fibonacci[fibonacci.length-1]
    fibonacci.push(newFibonacciItem);
    return getFibonacci();
}

console.log(getFibonacci()); //[LOG]: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
  

Hasta luego 🖖

Servicios

Software

IoT

Digitalización

Aplicaciones móviles

Consultoría

fjmduran.com v0.1.2