Javascript递归递减指数增加输出

时间:2017-07-03 17:34:29

标签: javascript math recursion iteration

所以我有一个函数getNext,它接受一个参数i。函数需要递归迭代直到i为0.但是,在函数中我需要一组数字从2增加。

function getNext(i) {
    if(i == 0) return;
    console.log('index: ' + i);
    console.log( code_here );
    i--;
    getNext(i);
}

因此getNext(3)的输出将是:

index: 3
2
index: 2
3
index: 1
4

有什么想法吗?我试图这样做而不添加额外的变量,但我不知道是否可能。

3 个答案:

答案 0 :(得分:0)

您可以为该值设置另一个参数。

<强> 实施例

function getNext(i, val) {
    if (i == 0) return;
    if (i === 3) {
        val = 2;
    } else {
        val++;
    }
    console.log("index: ", i, " value: ", val);
    i--;
    getNext(i, val);
}

getNext(3);

答案 1 :(得分:0)

没有附加变量的解决方案,但是......

......一个有封闭的人:

&#13;
&#13;
var getNext = (function(n) {
  var value = (typeof n !== "number" ? 2 : n);

  return function(i) {
    if (i === 0) return;

    console.log(i, value);
    value++;

    getNext(--i);
  }
}());
//}(5 /* <-- start value */));

getNext(3);
&#13;
&#13;
&#13;

...还有一个附加参数:

&#13;
&#13;
function getNext(i, n) {
  if (i === 0) return;

  n = (typeof n !== "number" ? 2 : n);
  console.log(i, n);

  getNext(i - 1, n + 1);
}

getNext(3);
//getNext(3, 5 /* <-- start value */);
&#13;
&#13;
&#13;

如果需要,两者都允许您定义不同的起始值。

答案 2 :(得分:0)

根据您的预期输出(登录控制台),这里是您的代码,但我不知道您将如何处理日志。

function getNext(i, x) {
var inc = x ? 2 : x;
    if(i == 0) return;
    console.log('index: ' + i + ', value: ' + inc);
    getNext(--i, ++inc);
}

并将其称为getNext(3)