定义:
实现:
function fibonacci(n) {
if (n==1 || n==2) return 1
return fibonacci(n-2) + fibonacci(n-1)
}
缺点:在一个算法中,如果递归函数调用过多次数,那么就会导致堆栈溢出。
解决方法:尾递归--不会发生栈溢出
function fibonacci(n, a1 = 1, a2 = 1) {
if (n==1 || n==2) return a2
return fibonacci(n-1, a2, a1 + a2)
}
延伸1--循环(使用解构,给初始值,然后不断的累加)
function fibonacci(n){
if (n==1 || n==2) return 1
var a1 = 1, a2 = 1
for (let i = 2; i < n; i++){
[a1, a2] = [a2, a1 + a2]
}
return a2
}
延伸2--generator
网友评论