您的位置:首页 > 其它

递归算法:斐波那契数列延伸拓展

2018-01-28 17:50 453 查看
已知一个数列前10项分别是{0, 1, 1, 2, 4, 7, 13, 24, 44, 81}

输入描述:

多组数据输入输出;
第一行输入一个整数n(1<=n<=50)

输出描述:

输出数列中的第n个数。
示例1

输入

1
2
3

输出

0
1
1
关于此问题首先可以联想到斐波那契数列(兔子繁殖问题),也就是递归的思想。

int Fibonacci( unsigned int n )
{
    if( n <= 0 )
        return 0;
    if( n == 1 )
        return 1;
    return Fibonacci( n - 1 ) + Fibonacci( n - 2 );
}
思路:
就是前三项的和就是下一项,只要给出前三项,后面的就都可以求出来。通过数组进行前三项的赋初值,利用数组输出。
代码如下:
//#include<bits/stdc++.h>//万能头文件
#include<iostream>
using namespace std;
int main()
{
long long a[50]={0};//定义成long long型
a[1]=0;//此处不要再用int定义了
    a[2]=1;
a[3]=1;
for(int i=4;i<=50;i++)
{
a[i]=a[i-1]+a[i-2]+a[i-3]; //利用i变量来进行循环 进行递归运算
}
int n;
while(cin>>n)//控制多组数据的输入输出
{
cout<<a
<<endl;//通过数组进行输出
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: