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