C++用递归实现斐波那契数列

【题目描述】

菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。

给出一个正整数a,要求菲波那契数列中第a个数是多少。

 

【输入】

第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1≤a≤20)。

【输出】

输出有n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数的大小。

【输入样例】

4
5
2
19
1

【输出样例】

5
1
4181
1

来自一枚刚学不久小蒟蒻,

第一次发博客;

记得zhx说过:

“要想理解递归,就要先理解递归”

emmm真是一点毛病都没有啊!!!

递归就是一个函数,

不停的调用自己,

为了防止死循环,

需要加特判;

递归主要是找到那个类似公式的东西(我也不知道叫啥);

然后写一个函数,调用自己;

 1 #include<iostream>
 2 using namespace std;
 3 int fib(int);
 4 int main()
 5 {
 6     int n,a[200];
 7     cin>>n;
 8     for(int i=1;i<=n;i++)
 9         cin>>a[i];
10     for(int i=1;i<=n;i++)
11     {
12         cout<<fib(a[i])<<endl;
13     }
14     return 0;
15 }
16 int fib(int x)
17 {
18     if(x<=0) return 0;
19     if(x<=2) return 1;
20     return fib(x-1)+fib(x-2);
21 }

每日打卡O(∩_∩)O

posted @ 2019-09-02 23:27  sshadows  阅读(5502)  评论(1编辑  收藏  举报