一、遍历的方式性能更加,递归的方式代码利于阅读、简短,性能略差
二、裴波那契数定义:
· 位置0的裴波那契数为0
· 1和2的裴波那契数为1
· n(n > 2)裴波那契数为 (n-1)的裴波那契数 + (n-2)裴波那契数
三、遍历的方式
fibonacciIterative (n) { if (n < 1) { return 0 } if (n <= 2) { return 1 } let fibNMinus2 = 0 let fibNMinus1 = 1 let fibN = n for (let i = 2; i <= n; i++) { fibN = fibNMinus1 + fibNMinus2 // 更新上一次的裴波那契数(n - 2) fibNMinus2 = fibNMinus1 // 记录当前的裴波那契数(n - 1) fibNMinus1 = fibN } return fibN } console.log(fibonacciIterative(10) // 55
四、递归的方式
fn1 (n) { // debugger const memo = [0, 1] const fn2 = (n) => { if (memo[n] != null) { return memo[n] } const v1 = fn2(n - 1, ‘fn-1‘) const v2 = fn2(n - 2, ‘fn-2‘) memo[n] = v1 + v2 // memo[n] = nv return memo[n] } /* 解析版本如下 const v1 = fn2(n - 1, ‘fn-1‘) // n的值 -> 9、8、7、6、5、4、3、2,首次的值为 memo[1] -> 1 const v2 = fn2(n - 2, ‘fn-2‘) // n的值为v1 n的值的反转,首次的值为 memo[0] -> 0 memo[n] = v1 + v2 // 首次为 1 + 0 -> memo[2] = 1 return memo[n] */ return fn2(n) } console.log(fn1(10)) // 55
欢迎访问博客站:http://www.devloper.top/article/detail/0efbec70-34b8-11eb-8b91-7b988df38548
-- 希望,只有和勤奋作伴,才能如虎添翼 --
原文:https://www.cnblogs.com/jingxuan-li/p/14077337.html