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模式)。

 

posted @ 2019-04-13 16:14  web前端-张小七  阅读(1168)  评论(0编辑  收藏  举报