Ir al contenido principal

Serie de Fibonacci en C++

Una sucesión de Fibonacci es aquella cuya ley de recurrencia es: an = an-1 + an-2. Es decir, cada término de la sucesión se obtiene sumando los dos anteriores. Para empezar a construirla necesitamos, por tanto, dos números de partida, a1 y a2. De esta forma, a3 sería a2 + a1 ; a4 sería a3 + a2 y así sucesivamente.


La más conocida es la que tiene a1 = 1 y a2 = 1, cuyos términos son: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377 ... números que son conocidos como Números de Fibonacci.

Los términos de cualquier sucesión de Fibonacci tienen la particularidad de que el cociente entre dos términos consecutivos se aproxima al Número de Oro (1.6180339887499...), es decir, el límite de los cocientes an+1/an tiende al Número de Oro cuando n tiende a infinito.

Además, las series de Fibonacci cumplen otras curiosas propiedades, como por ejemplo, que la suma de n términos es igual al término n+2 menos uno:

a1 + a2 + a3 + a4 + ..... + an-1 + an = an+2 - 1

Implementación

Comentarios

Entradas populares de este blog

Autómata Finito Determinista - Código C++

En esta ocasión les traigo la implementación de un AFD en lenguaje C++. Un autómata finito determinista es una quíntupla que denotaremos de manera genérica por M=(Q,Σ,q0,δ,F) , donde: Q es un conjunto finito cuyos elementos llamaremos estados.  Σ es un alfabeto que llamamos alfabeto de entrada.  q0∈Q es un estado señalado que llamamos estado inicial.  F es un subconjunto de Q no vacío, cuyos elementos llamamos estados finales.  δ es una aplicación de Q×Σ→Q , que llamamos función de transición.  Para la implementación se utiliza una matriz de transición convirtiendo los símbolos y letras del alfabeto en indices de la matriz donde los estados son las FILAS y los símbolos son las COLUMNAS, por ejemplo: Tenemos un alfabeto Σ = {a, b, c}, entonces en la matriz de transición tomara la letra 'a' como indice 0 , letra 'b' indice 1 y letra 'c' indice 2. Lo mismo seria para las transiciones, pero allí no interesa que letra representa si no cuantos estados...

Collision Shapes - Box2D & SFML

En el ámbito del desarrollo de videojuegos y simulaciones interactivas, la gestión de colisiones es un componente crítico que determina la experiencia del usuario y la interactividad del entorno virtual. Desde las interacciones entre elementos del juego hasta las respuestas del entorno, las colisiones bien implementadas son esenciales para la jugabilidad y la inmersión.  En esta oportunidad, exploraremos en detalle el tema de las colisiones en 2D, centrándonos en la implementación de Collision Shapes y el uso del polimorfismo mediante dos herramientas populares: Box2D, un motor de física de código abierto, y SFML (Simple and Fast Multimedia Library), una biblioteca gráfica multiplataforma.  Con estas herramientas, podremos crear simulaciones y juegos con colisiones precisas y realistas, agregando profundidad y dinamismo a nuestros proyectos en dos dimensiones.   IDE: CodeBlocks: http://www.codeblocks.org/ v13.12 Library: SFML: http://www.sfml-dev.org/ v2.1 Box2...

Simulador de crecimiento L-System 2D - OpengL

Los sistemas L-Systems representan una herramienta poderosa para simular el crecimiento de formas complejas y orgánicas y en esta implementación haremos un enfoque técnico para generar estructuras visuales fascinantes.  Originarios de la teoría de la gramática formal, los L-Systems describen el crecimiento de patrones mediante reglas recursivas simples, lo que los convierte en una herramienta valiosa para simular el crecimiento de plantas y otros fenómenos naturales en entornos virtuales. En este artículo, exploraremos cómo implementar sistemas L-Systems en Java para simular específicamente el crecimiento de una planta. Analizaremos la lógica detrás de la generación de ramas, hojas y tallos, utilizando reglas de producción adaptadas para simular el crecimiento orgánico. Además, exploraremos técnicas de renderizado en Java para visualizar el proceso de crecimiento de la planta, desde la generación inicial hasta el resultado final.  Capturas de pantalla: Código d...