封装一函数实现斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
1. 经典求法
function fibonacci(n) {
let num
if(n == 0) return 0;
if(n<=2){
num = 1
}
num = fibonacci(n-2) + fibonacci(n-1)
return num
}
以上实现在执行效率上并没有做到最优,每次计算第n个斐波那契数,都得往前计算n-1 及 n-2 的返回值,为了得到n-1的斐波那契数又得往前计算n-2 及 n-3 的返回值…依次类,推递归n次,时间复杂度O(2^n),太恐怖,所以,必须优化。
2. 顺序求法
因为斐波那契数列可以从左到右顺序的求出每一项的值,因此只需要顺序计算到n项即可,时间复杂度为O(n)的
function fibonacci(n) {
if(n == 0) return 0;
if(n<=2){
return 1
}
let first = 1
let second = 1
let three = 0
for(let i = 2 ; i< n ; i++){
three = first+second
first = second
second = three
}
return three
}