def fibonacci(n, memo={}):
if n in memo:
return memo[n]
if n <= 1:
result = n
else:
# 局部变量用于计算当前结果
result = fibonacci(n - 1, memo) + fibonacci(n - 2, memo)
memo[n] = result
return result
num = 6
print(f"斐波那契数列第 {num} 项的值是: {fibonacci(num)}")
#include <iostream>
#include <unordered_map>
// 带记忆化搜索的斐波那契数列函数
int fibonacci(int n, std::unordered_map<int, int>& memo) {
// 如果 n 已经在 memo 中,直接返回结果
if (memo.find(n) != memo.end()) {
return memo[n];
}
int result;
// 处理基本情况
if (n <= 1) {
result = n;
} else {
// 递归计算斐波那契数
result = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
}
// 将计算结果存入 memo
memo[n] = result;
return result;
}
int main() {
int num = 6;
// 用于记忆化的哈希表
std::unordered_map<int, int> memo;
std::cout << "斐波那契数列第 " << num << " 项的值是: " << fibonacci(num, memo) << std::endl;
return 0;
}