题目描述
小蒜蒜最近学习了斐波那契数列。
斐波那契数列是指这样的数列:数列的第一个和第二个数都为 1,接下来每个数都等于前面 2 个数之和。
给出一个正整数 k,要求斐波那契数列中第 k 个数是多少。
输入格式
输入一行,包含一个正整数 k。(1 ≤ k ≤ 46)
输出格式
输出一行,包含一个正整数,表示斐波那契数列中的第 k 个数。
Sample Input
19
Sample Output
4181
思路
这道题的关键就在于找到递推公式,斐波那契数列的第一项和第二项都为1,从第三项开始,每项等于前面两项之和,因此得到递推公式:a[i] = a[i - 1] + a[i - 2]。
C语言代码:
#include<stdio.h>
int a[55];
int main()
{
a[0] = 0;
a[1] = 1;
a[2] = 1;
int k;
scanf("%d", &k);
for (int i = 3; i <= 50; i++)
a[i] = a[i - 1] + a[i - 2];//递推公式
printf("%d", a[k]);
return 0;
}
C++代码:
#include<bits/stdc++.h>
using namespace std;
long long num[50] = {
0};
void Init()
{
num[1] = 1;
num[2] = 1;
num[3] = 2;
for(int i = 4; i < 50; i++)
num[i] = num[i - 1] + num[i - 2];
}
int main()
{
int n;
Init();
while(cin >> n)
cout << num[n] << endl;
return 0;
}