递归范围函数不起作用

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)

JSe*_*ser 5

它不起作用,因为您在递归调用中缺少参数

它应该是这样的

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)