En matemáticas, se conoce como sucesión de Fibonacci a una secuencia infinita de números naturales, que se inicializa con los números 0 y 1, y continúa construyéndose sumando los dos términos anteriores para obtener el siguiente número de la secuencia, en otras palabras, el siguiente número se obtiene sumando los 2 últimos números de la sucesión. Por ejemplo, el tercer término es la suma de los dos primeros términos, el cuarto término es la suma del segundo y tercer término, y así sucesivamente. 

Los términos de esta secuencia se conocen como números de Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... y se extienden hacía el infinito.

Aunque ya existían indicios de esta secuencia en la literatura matemática india, fue el matemático italiano Leonardo de Pisa quien la describió y la dio a conocer en occidente durante el siglo XIII. Esta sucesión tiene interesantes propiedades matemáticas que son aprovechadas en diversos campos y aplicaciones como: informática, economía y arte (este último en conjunto con la proporción áurea). La serie de Fibonacci también se encuentra en configuraciones biológicas, como patrones de crecimiento y estructuras geométricas naturales.

Después de esta breve explicación, pasemos al código:

#include <iostream>

int main() {
    unsigned int n;
    std::cout << "Ingrese el número de términos de la serie de Fibonacci que desea ver: ";
    std::cin >> n;
    unsigned int first = 0;
    unsigned int second = 1;
    unsigned int next;
    std::cout << first << " " << second << " ";
    for (unsigned int i = 0; i < n - 2; i++) {
        next = first + second;
        std::cout << next << " ";
        first = second;
        second = next;
    }
    std::cout << std::endl;
    return 0;
}

El programa solicita al usuario que ingrese el número de términos de la serie de Fibonacci que desea imprimir, luego, se declaran tres variables enteras sin signo: 'first', 'second' y 'next'. Estas variables se utilizan para almacenar los valores de los términos de la serie. La variable 'first' se inicializa en 0, la variable 'second' se inicializa en 1 y la variable 'next' se utiliza para calcular el siguiente término de la serie.

Después de inicializar las variables, el programa imprime los dos primeros términos de la serie, que son 0 y 1. Posteriormente, el programa entra en un bucle 'for' que se ejecuta 'n-2' veces, donde 'n' es el número de términos ingresado por el usuario. En cada iteración del bucle, el programa calcula el siguiente término de la serie, sumando los valores de 'first' y 'second' y almacenándolo en la variable 'next'. El programa imprime el valor de next y actualiza los valores de first y second para el siguiente cálculo. El proceso se repite hasta salir del bucle.

En resumen, el programa genera la secuencia de Fibonacci hasta el N-ésimo término (dependiendo de la capacidad del tipo de dato) y lo imprime en la consola del compilador.

El código ha sido probado en Code::Blocks en Windows, por lo que es completamente funcional.

Puedes descargar el código .CPP aquí.

NOTA: Si al correr el programa los acentos o caracteres especiales no se muestran correctamente, puedes usar esta solución: ¿Cómo mostrar acentos y caracteres especiales en programas escritos en C++?