javascript - JavaScript 中的范围递归

标签 javascript recursion

我试图解决一个递归问题,获取范围 (x, y) 内的整数。

这需要负数和正数。

预期结果的示例如下:

range(2,9); // => [3,4,5,6,7,8]
range(7,2); // => [6, 5, 4, 3]
range(-9,-4)) // => [-8,-7,-6,-5]

目前我有 ff:

var range = function(x, y) {

var result = [];

if(x < y){
  for(var i = x+1; i < y; i++){
  result.push(i);
}

return result;
}

if(x > y){
  for(var j = x-1; j > y; j--){
  result.push(j);
}
return result;

}

};

如何使用给定规则将 for 循环转换为递归。

最佳答案

var range = function (x, y, r = []) {
    const step = x > y ? -1 : 1; // this determines if your range goes up or down
    if(x === y) return [];
    if(x === y - step) return r;
    return r.concat(x + step, range(x + step, y));
}
console.log(range(9,2));
console.log(range(2,9));
console.log(range(9,9))
console.log(range(-7, -15));
console.log(range(-15, -7))

基本逻辑是将x插入数组中,然后concat下一个x范围y,无论它比当前的x小还是大

关于javascript - JavaScript 中的范围递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48312680/

相关文章:

c - C 语言的二分查找算法

c++ - 如何解决由递归函数引起的堆栈溢出错误? C++

c++ - 我可以将递归函数的返回值设置为常量吗?

javascript - 使用 JavaScript 提交

javascript - D3 - 如何使用不透明度过滤正确的值?

javascript - AngularJS - For 循环推送整个对象而不仅仅是标题

c - 目录和文件的递归列表 C

javascript - 提交表单并更改页面

javascript - 如何确保工具提示在悬停时不会消失

python - 递归程序 : What am I doing wrong?