【发布时间】:2021-08-10 04:23:36
【问题描述】:
我试图解决 freeCodeCamp 中的 Javascript 问题。问题的标题是“使用递归创建数字范围”。我无法准确地根据问题描述修复它。然后,我试图从互联网上了解可能的解决方案。我找到了一个确切的解决方案并自行修改以更好地理解。编译器接受答案!但是我现在真的不明白为什么它最终会返回一个数组,因为当 startNum 和 endNum 都相同时它会返回一个数字。谁能解释一下这个程序吗?
function rangeOfNumbers(startNum, endNum) {
console.log(startNum);
console.log(endNum);
if (endNum - startNum === 0) {
console.log(startNum);
return [startNum];
} else {
var numbers = rangeOfNumbers(startNum, endNum - 1);
console.log(numbers);
//numbers.unshift(endNum);
numbers.push(endNum);
return numbers;
}
}
console.log(rangeOfNumbers(1, 5));
【问题讨论】:
-
"当 startNum 和 endNum 相同时返回一个数字"。不,这不是一个数字,它是一个数组:
return [startNum];。一个数字是return startNum; -
endNum - startNum === 0更清楚地写成endNum === startNum -
但是你不应该返回一个数字,因为递归调用者希望它返回一个数组,所以它可以调用
numbers.push(endNum)
标签: javascript arrays function recursion