题目描述:
斐波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面 2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。
样例数据:
样例输入:
19
样例输出:
4181
思路:
这道题有两种方法:
第一种:
long long f(int x){
if(x == 1 || x == 2) return 1;
return f(x-1) + f(x-2);
}
然后再main里调用就AC了
第二种(我直接放的CODE)
#include <bits/stdc++.h>
using namespace std;
int i = 2;//定义全局变量
int k;//方便使用
long long f(int a,int b){
int c = a+b;//算出本次的数字
i++;//表示现在是第几个数字
if(i == k) return c;//如果到了第k个数字的位置,就退出递归。
return f(b,c);//如果还没到,则继续递归。
}
int main(){
cin >> k;//输入
if(k == 1 || k == 2) cout << "1";
else cout << f(1,1);//因为第一、二个数字都是1,所以先排除k=1或k=2的情况。
return 0;
}