在函数里调用自己的行为:函数递归调用
递归调用一定要有最后一次递归时的终止条件,如果没有,会导致无限调用,导致调用栈溢出,最后导致程序崩溃
递归调用
function factorial(n) {
if (n === 1) {
return 1;
}
return n * factorial(n - 1);
}
console.log(factorial(5)) // 120
尾递归调用:让递归成为函数最后一步
function factorial(n, target = 1) {
if (n === 1) {
return target;
}
return factorial(n - 1, n * target);
}
console.log(factorial(5))
网友评论