1.ES6常用功能与常见问题分析-(递归-尾递归)
递归:
function a(n) {
if(n===0){
return 1;
}
return n*a(n-1);
}
a(3);
尾递归:尾递归是一种递归的写法,可以避免不断的将函数压栈最终导致堆栈溢出。通过设置一个累加参数,并且每一次都将当前的值累加上去,然后递归调用。
function f (n,total = 1){
if(n===0){
return total
}
return f(n-1,n*total)
}
f(3,1);
注意:尾递归不一定会将你的代码执行速度提高;相反,可能会变慢。不过,尾递归可以让你使用更少的内存,使你的递归函数更加安全 (前提是你要开启harmony模式)。