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.
Me ayudo mucho, no sabía cómo hacer este ejercicio, hasta que encontré esta página, gracias por la explicación muy excelente gracias :).