#include <iostream>
long long arrOfFib[50];
// 2.记忆化搜索实现
long long fib2(int n)
{
if (n == 0) // 递归边界
return 0;
if (n == 1) // 递归边界
return 1;
if (arrOfFib[n] == -1) // 没有计算过
arrOfFib[n] = fib2(n - 1) + fib2(n - 2); // 计算并保存
return arrOfFib[n]; // 计算过就直接返回
}
// 斐波那契数列的实现
// 1.递归实现
using namespace std;
int fib(int n)
{
if (n == 0) // 递归边界
return 0;
else if (n == 1) // 递归边界
return 1;
else
return fib(n - 1) + fib(n - 2); // 递归调用
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < 50; i++)
{
arrOfFib[i] = -1; // 初始化,当没有计算过的时候,值为-1,避免与0冲突
}
for (int i = 0; i < n; i++)
{
cout << "第" << i << "项:" << fib2(i) << endl;
}
return 0;
}
记忆化搜索
最新推荐文章于 2025-05-04 20:55:54 发布