之前一直理解不了递归函数的执行顺序,直到看了网上的一个非常傻瓜式的示例,终于理解了一点。例子如下。
以阶乘为例:
function factorial(n) {
if (n == 1) return n;
return n * factorial(n - 1)
}
console.log(factorial(5)) // 5 * 4 * 3 * 2 * 1 = 120
怎么理解呢?递归函数的执行顺序可以理解为是嵌套式的,执行顺序类似如下:
function factorial(n) {
if (n == 1) return n;
return n * factorial(n - 1)
}
factorial(3)
//拆解
function factorial(3) {
if (3 == 1) return n; // false
return 3 * factorial(3 - 1) // 这个是factorial(3)的结果
}
// 此时得到 3 * factorial(2)
function factorial(2) {
if (2 == 1) return n; // false
return 2 * factorial(2 - 1) // 这个是factorial(2)的结果
}
// 此时得到 3 * 2 * factorial(1)
function factorial(1) {
if (1 == 1) return n; // true 这个是factorial(1)的结果
return n * factorial(n)
}
// 此时得到 3 * 2 * 1 = 6
例子作者:冴羽
链接:https://juejin.im/post/59b88ede5188256c60692a85
来源:掘金