C/C++编程学习 - 第4周 ⑥ 斐波那契数列

题目链接

题目描述

小蒜蒜最近学习了斐波那契数列。

斐波那契数列是指这样的数列:数列的第一个和第二个数都为 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;
}

猜你喜欢

转载自blog.csdn.net/qq_44826711/article/details/112908620