Serie de Fibonacci con LAMBDA y REDUCE en una sola fórmula

Surge un reto interesante en la comunidad: generar la serie de Fibonacci con una sola fórmula de Excel, sin celdas auxiliares ni macros. Un miembro comparte su solución funcional usando LAMBDA con REDUCE para construir la secuencia de forma iterativa:

``
=LAMBDA(n;LET(
inicial;{1;1};
SECUENCIA;REDUCE(inicial;SECUENCIA(n-2);LAMBDA(arr;i;LET(
ultimo;INDICE(arr;FILAS(arr));
penultimo;INDICE(arr;FILAS(arr)-1);
nuevo;ultimo+penultimo;
APILARV(arr;nuevo))));
INDICE(SECUENCIA;n)))(40)
`

La lógica es clara: se parte de un array inicial {1;1} y REDUCE va iterando n-2 veces, extrayendo en cada paso los dos últimos valores con INDICE y FILAS, sumándolos y apilando el resultado con APILARV. Al final, INDICE(SECUENCIA;n) extrae el n-ésimo término.

La fórmula funciona perfectamente para n >= 3. Se envuelve todo en una LAMBDA` autoejecutable que recibe n como parámetro, en este caso 40 para obtener los primeros 40 números de Fibonacci.

Fibonacci en una sola celda, sin macros ni columnas auxiliares

Un reto que engancha a cualquiera que empiece con las fórmulas dinámicas: generar la serie de Fibonacci con una sola fórmula, sin celdas de apoyo ni macros. Un miembro de la comunidad compartió una solución elegante que combina LAMBDA y REDUCE.

La fórmula

`` =LAMBDA(n; LET( inicial; {1;1}; serie; REDUCE(inicial; SECUENCIA(n-2); LAMBDA(arr; i; LET( ultimo; INDICE(arr; FILAS(arr)); penultimo; INDICE(arr; FILAS(arr)-1); nuevo; ultimo + penultimo; APILARV(arr; nuevo)))); INDICE(serie; n)))(40) ``

Cómo funciona paso a paso

La idea es construir la serie de forma iterativa:

  • Se parte de un array inicial {1;1}, los dos primeros términos.
  • REDUCE itera n-2 veces (los términos que faltan). En cada vuelta, arr es la serie acumulada hasta el momento.
  • Dentro de cada iteración se toman los dos últimos valores con INDICE y FILAS: ultimo es el término en la última fila y penultimo el anterior.
  • Se suman en nuevo y se añade al final con APILARV.
  • Al terminar, INDICE(serie; n) extrae el término n-ésimo.

Todo va envuelto en una LAMBDA autoejecutable que recibe n como parámetro; en el ejemplo se llama con 40 para obtener los primeros cuarenta números de la serie. La fórmula funciona a partir de n igual o mayor que 3.

Funciones clave

  • REDUCE: el motor iterativo; acumula la serie sin bucles ni celdas auxiliares.
  • LAMBDA autoejecutable: define y llama la función en la misma celda, pasando n.
  • INDICE y FILAS: localizan los dos últimos términos en cada paso.
  • APILARV: añade cada nuevo término al final del array acumulado.

Conclusión

Este ejercicio es una puerta de entrada perfecta a REDUCE: en cuanto entiendes que el acumulador puede ser un array entero que va creciendo, se abren un montón de patrones (series, recorridos, construcciones fila a fila). Pequeños retos como este, muy habituales en la comunidad de InflueXcel, enseñan más de fórmulas dinámicas que muchos tutoriales largos.

Más contenido de Excel en InflueXcel