React 前端导航

js数据结构与算法之动态规划

动态规划

概念:动态规划是一种将复杂问题分解成更小的子问题来解决的优化技术。

遵循三大步骤

1.定义子问题
2.实现要反复执行来解决子问题的部分
3.识别并求解出边界条件

对斐波那契数列进行动态规划方案解决:

//递归解决方案

function Fn (n) {
if(n<=2) {
return 1;
} else {
return Fn(n-1) + Fn(n-2)
}
}

 

//动态规划算法

function iterFib(n) {
let last = 1; //第一个数据
let nextLast = 1; //下一个数据
let result = 1; //结果
for (let i = 2; i < n; ++i) {
result = last + nextLast;
nextLast = last;
last = result;
}
return result;
}

 

结论:对性能进行比较,在数据大的时候,递归的性能显的就尤其差

console.time('timer');
console.log(iterFib(40),'2')
console.timeEnd('timer');

console.time('timer');
console.log(Fn(40),'1')
console.timeEnd('timer');

//执行结果
102334155 2
timer: 2.631ms
102334155 1
timer: 742.463ms

声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。邮箱:farmerlzj@163.com。 本站原创内容未经允许不得转载,或转载时需注明出处: 内容转载自: React前端网:https://qianduan.shop/blogs/detail/155
想做或者在做副业的朋友欢迎加微信交流:farmerlzj,公众号:生财空间站。

#js#动态规划

相关推荐

原型与原型链、继承

原型与原型链、继承简单实现

浏览器中的js事件循环(Event loop)

本文将简述浏览器中的js事件循环机制,帮助我们理解浏览器环境js代码是如何运行的。Javascript的一大特点是单线程,也就意味着同一时间他只能做一件事。事件循环(Event Loop)是为了协调事件,用户交互,UI渲染,网络处理等行为,防止线程阻塞而诞生的。