递归缓存技术,缓存机制Memoization
2024-10-20 16:03:27
先看一下代码:
再看一下执行时间:
可以看出第一个阶乘的执行时间是3ms,后面的由于缓存了之前的计算结果,所以直接返回结果。
原理就是缓存之前的计算,避免重复计算。关键在于建立缓存数组。
可以看一下执行第一行调用的时候memfactorial.cache是什么样子的
从这张图即可得出结论,为何需要缓存。即避免重复计算。
代码:
function memfactorial(n) {
if(!memfactorial.cache) {
memfactorial.cache = [1,1];
} if(!memfactorial.cache[n]) {
memfactorial.cache[n] = n * memfactorial(n-1);
} return memfactorial.cache[n];
}
尾递归优化结果:
常规递归结果:
最新文章
- 基于DDD的现代ASP.NET开发框架--ABP系列文章总目录
- C# 小知识
- Apache Kafka – KIP 32,33 Time Index
- FlexSlider jQuery滑动切换插件 参数
- Shell脚本检测文件夹是否已被挂载的方法
- laravel中的错误与日志
- Remodal – 支持 Hash 追踪的响应式模态窗口
- C++/CLI——读书笔记《Visual C++/CLI从入门到精通》 第Ⅳ部分
- Margin and Padding in Windows Forms Controls
- java的nio之:java的nio系列教程之pipe
- codeforces Gym 100500H A. Potion of Immortality 简单DP
- [HTML5] Level up -- Display
- Windows 怎么知道我已连线到网际网络? 原来当中大有文章!
- ios基金会-XCode温馨提示
- 基于Java 的增量与完全备份小工具
- Linux指令--rm, rmdir
- spring学习笔记一 入门及配置
- JavaScript 系列博客(七)
- delphi中退出是弹出让你确定的几种确定对话框怎么写?
- Centos7.5 VMtools的安装与卸载