神奇的函数缓存.妈妈再也不用担心递归类函数跑不快了
神奇的函数缓存.妈妈再也不用担心递归类函数跑不快了
.
原作者:祁宇
.ppt下载地址:在此
真的非常神奇!
元<型名 R,型名...A>
函数<R(A...)>缓存(R(*针)(A...)){
静 映<元组<A...>,R>啊;
打印("啊",啊.大小());
中[=](A...o){//这是最后执行的函数
元组<A...>t(o...);动 m=啊.查找(t);
如(m==啊.尾())啊[t]=针(o...);
打印("啊",啊.大小());
中 啊[t];
};//[=]不能换,*一换就出错*,必须要把所有指针传出去,所以,要用=号,否则要出问题
//一直用的是这个内部函数,同一个函数.所以啊0只打印了一次
}//返回的是f函数,这个玩意儿还是高级货非常厉害的
元<型名 R,型名...A>
动 快计(R(*针)(A...)){//每一个函数都保存了的
用 函=函数<R(A...)>;静 无序映<推导(针),函>呀;
动 p=呀.查找(针);
如(p==呀.尾())压(呀,针,缓存(针));//就是这里
//打印("呀",呀.大小());//通过这里可以知道,这里只缓冲了一个,所以没必要用无序映.
中 呀[针];
//针,变成缓存针了,对不,这个p还没变化
//查到针的,然后压进去了.每次在缓存这里变化
//直接返回的呀[针]
}//返回的是函数,这个函数针与参数结合,返回已存储值
//多适用于函数不变,参数不变的递归函数
//快计,快速计算.有缓冲的计算
测试:
整 f(整 i){中(i<2)?i:f(i-1)+f(i-2);}
整 g(整 i){
中(i<2)?i:快计(g)(i-1)+快计(g)(i-2);
}
空 测试1(){
计时器 t;
整 n=g(38);
输出<<n;
t.看();
}//开始还怀疑出错了.
空 测试(){
计时器 t;
整 n=f(38);
输出<<n;
t.看();
}
空 主(){
测试();
测试1();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现