火龙信奥
  • 首页
  • 课程
  • 题库
  • 打卡
    • 代码对战
    • 快速对战
  • 题单
  • 团队
  • 荣誉墙
  • 商城
  • 登录 / 注册

递归+递推改进+记忆化

作者: 作者的头像   huolong , 时间:2024-11-03 11:38:14 , 所有人可见, 阅读  10


//高精度 乘以 低精度 
vector<int> add(vector<int> A, int b)
{
    vector<int> res ;
    int t = 0;
    for(int i=0; i<A.size() || t; i++){

        if(i < A.size()) t+=b*A[i];
        res.push_back(t % 10);
        t /=10;
    }

    //res 0 0 0 0 0 
    while(res.size() > 1 && res.back() == 0) res.pop_back();

    return res ;
}

//递归的问题:大量的重复计算!!! 
long long fib(int n)
{
    if(n <= 2) return 1;
    int a= fib(n-1);
    int b= fib(n-2);
    return a + b; 
}

//用递推来改进递归的问题 
long long f[60] = {0,1,1};
void fibb(int n){
    for(int i=3; i<=n; i++)
    {
        f[i] = f[i-1] + f[i-2];
    }
}

//记忆化+递归 来改进递归的问题 
long long mem[60] = {0}; //记忆力 或者叫备忘录 
long long fibx(int n)
{
    if(n <= 2) {
        mem[n] = 1;
        return mem[n];
    }
    if(mem[n-1] == 0) mem[n-1] = fibx(n-1);
    if(mem[n-2] == 0) mem[n-2] = fibx(n-2);
    mem[n] = mem[n-1] + mem[n-2];
    return mem[n]; 
}



int main(){
    //fibb(50) ;
    cout << fibx(50) ;
    return 0;
}


—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com

©2026加盟我们 | 关于我们 | ACM课程 | 常见问题 | 成果墙 | 评测记录 | 浙ICP备2021013995号
在线画图 | OI WIki | 打字练习
火龙信奥
请输入登录信息


请完成安全验证
验证码底图 滑块
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码



请输入注册信息(手机号验证码注册)





验证码5分钟有效,60秒内不可重复获取,每日最多3次

微信登录

微信登录二维码

正在生成二维码...

账号已过期,请续期。
去续期

绑定手机号

📱

为了更好地保护您的账号安全,享受完整的平台服务

请您尽快绑定手机号码