菲波那切数列
-
简单介绍一下
-
1、1、2、3、5、8、13、21、34 ....
-
这道题有个规律,第一项加上第二项永远等于第三项:1 + 1 = 2;1 + 2 = 3;2 + 3 = 5;3 + 5 = 8 ....
-
要求是传入第几项,得到该值,根据这个规律来实现一下
简单写法
function fibonacci(n) {
// 第一项和第二项都返回1
if (n === 1 || n === 2) return 1;
// 我们只要返回 n - 1(n的前一项)与 n - 2(n的前两项)的和便是我们要的值
return fibonacci(n - 1) + fibonacci(n - 2);
}
优化版本
function feibo(n, sum1 = 1, sum2 = 1) {
if (n === 1 || n === 2) return sum2;
return feibo(n - 1, sum2, sum1 + sum2);
}
这种写法缓存了,每次计算后的值,执行效率会很高;
100 次以上也会秒返回结果,这个也叫作尾递归优化