文章
36
粉丝
505
获赞
55
访问
370.6k
题目是求斐波那契数列第n项,a1=1,a2=2.
代码的话有两种解决方法
1.函数递归,因为n<=90,所以正常递归的话会超时,这里采用记忆化搜索的方法,rmb数组很好地避免了很多重复计算。
#include<bits/stdc++.h>
using namespace std;
long long rmb[100];
long long f(int n)
{
if (rmb[n])return rmb[n];
if (n == 1)return 1;
if (n == 2)return 2;
return rmb[n] = f(n - 1) + f(n - 2);
}
int main()
{
int n;
cin >> n;
cout << f(n);
return 0;
}
2.数组传播,不解释
#include<bits/stdc++.h>
using namespace std;
long long a[100];
int main()
{
int n;
cin >> n;
a[1] = 1;
a[2] = 2;
for (int i = 3; i <= n; i++)
a[i] = a[i - 1] + a[i - 2];
cout << a[n];
return 0;
}
登录后发布评论
暂无评论,来抢沙发