【发布时间】:2022-01-15 06:53:43
【问题描述】:
刚开始学习 javascript,我在学习递归时遇到了这段代码,有人可以帮我解释一下为什么输出是 [1,2,3,4,5] 吗?
function rangeOfNumbers(startNum, endNum) {
if (endNum - startNum === 0) {
return [startNum];
} else {
var numbers = rangeOfNumbers(startNum, endNum - 1);
numbers.push(endNum);
return numbers;
}
}
console.log(rangeOfNumbers(1,5))
我似乎无法掌握这行代码“var numbers = rangeOfNumbers(startNum, endNum - 1);”
我所知道的是,它会再次调用自己,同时在每次调用 endNum 时减去 1 并将其推送到 numbers 数组中
【问题讨论】:
-
您忽略了
if部分。 -
endNum为 5 时,将哪些参数传递给递归调用?该调用将返回什么,numbers的值将是什么?如果你不能直接弄清楚,你可以通过简单地单独调用相同的调用来测试它。 -
if (endNum - startNum === 0)很奇怪,这个比较好理解:if (endNum === startNum)。 -
这也是一个很奇怪的递归例子。
标签: javascript recursion