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
看不见我看不见我看不见我