alr*_*hen 6 javascript recursion
我试图通过递归地执行范围函数来教自己递归.我不明白为什么下面的代码不起作用?
迭代版本:
function rangeList(num, num2) {
var arr = [];
for (var i = num; i < num2; i++) {
arr.push(i);
}
return arr;
}
Run Code Online (Sandbox Code Playgroud)
递归版:
function rangeRecursive(num, num2) {
return (num2 > num) ? rangeRecursive(num2 - 1).concat(num2) : []
}
console.log(rangeList(1, 7)); // returns [1, 2, 3, 4, 5, 6]
console.log(rangeRecursive(1, 7)); // returns [7]
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为您在递归调用中缺少参数
它应该是这样的
function rangeRecursive(num, num2) {
return (num2 >= num) ? rangeRecursive(num /*this was missing*/, num2 - 1).concat(num2) : []
}
Run Code Online (Sandbox Code Playgroud)
还要注意三元组的变化条件,否则它会在1处停止并且不会连续.您可以使用>=或以下
return num2 > num ? rangeRecursive(num, num2 - 1).concat(num2) : [num]
Run Code Online (Sandbox Code Playgroud)