【问题标题】:Javascript Recursive Decrement Index Increasing OutputJavascript递归递减索引增加输出
【发布时间】:2017-12-07 01:23:33
【问题描述】:

所以我有一个函数 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

有什么想法吗?我正在尝试在不添加额外变量的情况下执行此操作,但我不知道是否可能。

【问题讨论】:

  • I need a set of numbers to increase from 2 你能解释更多吗?你可以把预期的输出。
  • @MohamedAbbas 预期的输出低于问题。
  • 我做了一些解决方案,如果它不能满足您的需求,请告知。

标签: javascript math recursion iteration


【解决方案1】:

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

...一个带闭包的:

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);

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

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 */);

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

【讨论】:

    【解决方案2】:

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

    示例:

    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);

    【讨论】:

      【解决方案3】:

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

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

      并称它为getNext(3)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-25
        • 2017-07-19
        • 1970-01-01
        • 2013-04-12
        • 1970-01-01
        • 2023-04-05
        • 2011-06-07
        • 2013-01-27
        相关资源
        最近更新 更多