动态规划的算法启蒙---斐波那契数列

斐波那契数列(概念不介绍了,都点进来了,默认都有基础)

##方法一:递归

后面的项依赖前面的项

每一项都在不停的调用自身,递归最重要的就是找到终止条件

```js

function fib(n) {

console.log(n)

if(n == 0) return 0

if(n == 1) return 1

return fib(n-1) + fib(n-2)

}

```

以40为例,通过打印可以看到递归开销非常大(100直接就停不下来了),可以用动态规划来优化

##方法二:动态规划1.0

计算机有两种开销:时间和空间

缓存 --- 空间换时间

用数组直接存储前面项的计算结果

```js

function fib(n) {

console.log(n)

let arr = []

if(n == 0) return 0

if(n == 1) return 1

for(let i = 2;i<=n;i++){

arr[i] = arr[i-1] + arr[i-2]

}

return arr[n]

}

```

不够不够,继续优化

使用数组其实对整个内存的影响也很大

用变量 --- 做原地编辑,不使用额外的空间

动态规划2.0

```js

function fib(n){

if(n <= 1) return n

let prev = 0,current = 1,next

for(let i = 2;i<=n;i++){

next = prev + current

prev = current

current = next

}

return current

}

```

ok!

拓展

webssembly

基于typescript

飞书文档、在线画板。追求性能

画布不会直接用canvas

而是canvaskit - skia - WebAssembly

上面的算法案例,如果用webssembly+递归,时间会非常快,通常不到1ms

相关推荐
音视频牛哥21 小时前
鸿蒙 NEXT RTSP/RTMP 播放器如何回调 RGB 数据并实现 AI 视觉算法分析
人工智能·算法·harmonyos·鸿蒙rtmp播放器·鸿蒙rtsp播放器·鸿蒙next rtsp播放器·鸿蒙next rtmp播放器
飞Link21 小时前
掌控 Agent 的时空法则:LangGraph Checkpoint (检查点) 机制深度实战
开发语言·python·算法
乐迪信息21 小时前
智慧港口中AI防爆摄像机的船舶越线识别功能
大数据·人工智能·物联网·算法·目标跟踪
F_D_Z21 小时前
扩散模型快速采样:从渐进蒸馏到并行推理
人工智能·算法·加速采样
睡一觉就好了。1 天前
哈希表(一)
算法·散列表
輕華1 天前
Word2Vec与CBOW算法实战:从词向量到上下文感知
人工智能·算法·word2vec
Matlab程序猿小助手1 天前
【MATLAB源码-第315期】基于matlab的䲟鱼优化算法(ROA)无人机三维路径规划,输出做短路径图和适应度曲线.
开发语言·算法·matlab
伟大的车尔尼1 天前
搜索题目:01 矩阵
动态规划·广度优先搜索
luoganttcc1 天前
CUDA grid/block 到矩阵映射示例(矩阵加法)
人工智能·算法·机器学习
YuanDaima20481 天前
Python 数据结构与语法速查笔记
开发语言·数据结构·人工智能·python·算法