记忆化搜索模板

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;
}
posted @ 2025-02-21 14:47  ToFuture$  阅读(27)  评论(0)    收藏  举报