function fibonacci2(n, result, preValue) {
if (n == 0) {
return result;
}
return fibonacci2(n - 1, preValue, result + preValue);
}
console.log("使用了尾递归,不会栈溢出", fibonacci2(2, 0, 1));
function fibonacci2(n, result, preValue) {
if(n === 0){
return result
}
return fibonacci2(n-1,preValue,result+preValue)
}
console.log(fibonacci2(100,0,1))
fibonacci2(99,1,1)
fibonacci2(98,1,2)
fibonacci2(98,2,3)
function fac(n){
if(n === 1){
return 1
}
return fac(n-1)*n
}
console.log(fac(10))
function fac(n,sum){
if(n === 1){
return sum
}
return fac(n-1,n*sum)
}
console.log(fac(10,1))
fac(9,10)
fac(8,10*9)
总结:尾递归,可想而知是逆递归,正常我们10个循环 是从1到10,而尾递归 是从10到1循环,但是循环的规律不变,这样也可以实现,而且还能避免栈溢出