尾递归:1
function f(a){
if(a == 1) return a
return a + f(a-1)
}
每次递归有一个变量a在内存中
应该每次更新这个a,而不是在内存中,扩展更多的a
1, 递归转化为循环迭代1
function f(a){
var result =0
while(true){
if(a==0) break;
result = result + a
a = a - 1
}
reutrn result
}
2, 尾递归优化1
function f(a, b=0){
if(a==0) return b
return f(a-1, a+b)
}
return 只返回一个纯函数,这就是尾递归优化