Introducción:
Hola, hoy resolveremos una serie muy similar a la de Fibonacci, este ejercicio lo saque de un practico que me pasaron.
Problema:
Generar y mostrar los primeros N términos de la siguiente serie : 0,1,1,2,4,7,13,24,44.
Solución:
En la series fibonacci se suele sumar los 2 anteriores resultados (llamémoslos a y b) para generar el actual (llamémoslo R), iniciando normalmente en: a= -1 y b=1.
En esta serie sucede algo similar, solo que toma los 3 anteriores (llamémoslos a, b y c), para generar el actual (R), iniciando en: a= -1, b=1 y c=0.
Siendo que R=a+b+c y a= -1, b=1 y c=0 sumamos y obtenemos:
R= -1+1+0
R= 0
Ahora antes de volver a sumar, hacemos una sucesión de los valores con las variables donde a=b, b=c, c=R, recordando que a = -1, b = 1 y c = 0.
a = b, b = c, c = R
a =1, b = 0, c = 0
R = 1+0+0
R = 1
Haciendo lo mismo repetidas veces podemos ver que la serie funciona:
a b c = R -1 1 0 = 1 1 0 1 = 1 0 1 1 = 2 1 1 2 = 4 1 2 4 = 7 2 4 7 = 13 4 7 13 = 24 7 13 24 = 44
Para que se entienda mejor lo escribiré en pseudocódigo.
Donde:
- a, b, c y R valen 0.
- n es la cantidad de números que retornara.
- n1 incrementara hasta llegar a n-1.
- serie es una variable de tipo cadena o string.
pedir n a=-1 b=1 c=0 while(n>0){ R=a+b+c mostrar R a=b b=c c=R n=n-1 }
Aquí les dejo el código escrito en c++, por si desean probar el código directamente:
#include <iostream> #include <string> using namespace std; int main(){ int R,n,a,b,c; R=0; a=-1; b=1; c=0; string serie=""; cout<<"por favor ingrese un número: "; cin>>n; while(n>0){ R = a+b+c; serie = serie+to_string(R)+","; a = b; b = c; c = R; n = n-1; } cout<<serie; cout <<"\n"<<endl; return 0; }
Si, encuentras algún error por favor dejalo en los comentarios, para que pueda rectificar el ejercicio.