【问题标题】:Print a sequence of numbers using recursion - javascript使用递归打印一系列数字 - javascript
【发布时间】:2013-10-02 08:10:04
【问题描述】:

我有这个函数,它以类似三角形的方式打印从1n 的数字。

function printNumbers(n) {
  var result = "";
  var counter = 1;
  while (counter <= n) {
    result += counter;
    console.log(result);
    counter = counter + 1;
  }
}
console.log(printNumbers(4));

结果如下所示:

1
12
123
1234

我需要有关如何使用递归执行此操作的指针,因为我是编程新手,我不知道如何执行此操作。

【问题讨论】:

标签: javascript recursion


【解决方案1】:

基本思路就是用上一个结果来构建新结果:

function printNumbers(n){
    var result;
    if(n <= 1)
        result = '1';
    else
        result = printNumbers(n-1) + n;
    console.log(result);
    return result;
}

您也可以使用三元运算符很好地分配给这样的变量:

function printNumbers(n){
    var result = n <= 1 ? '1' : printNumbers(n-1) + n;
    console.log(result);
    return result;
}

【讨论】:

    【解决方案2】:
        function printNumbers(n, counter, result){
            counter = counter || 0;
            result = result || "";
            if (counter >= n) return result;
            return printNumbers(n, ++counter, result+""+counter);
        }
        alert(printNumbers(10));
    

    【讨论】:

      【解决方案3】:
      Function doCounter(counter, I, n)         
      {
          If(I>n) {
              Console.log(counter);
              doCount(counter+I, I++, n);
          }
      }
      

      doCounter(1,0,4);

      【讨论】:

        【解决方案4】:

        你可以试试这样的:

        function Recursion(n) {
          if (n <= 9) // to prevent infinite loop
          {
            var s = '';
            for (var i = 1; i < n; i++)
            {
              s += i; // concatenate until n
            }
            console.log(s); // print the generated number
            return Recursion(n + 1); // increase n and recall Recursion
          }
        };
        
        Recursion(1);
        

        http://jsbin.com/eDOqOCi/1/edit?html,js,output

        【讨论】:

          【解决方案5】:
          function oneToN(n) {
            if (n == 0) {
              console.log(n);
              return n;
            } else {
              oneToN(--n);
              console.log(n + 1);
            }
          }
          oneToN(5);
          

          【讨论】:

          • 此代码不会产生答案要求的输出。请编辑答案以修复代码并添加一些解释并指出它解决的问题的新方面,或删除它..
          【解决方案6】:

          这里是 Javascript 版本:

          function printNumbers(n){
              if(n >= 10) {
                  printNumbers(Math.floor(n / 10));
              }
          
              console.log(n);
          }
          
          printNumbers(1234);
          
          // 1
          // 12
          // 123
          // 1234
          

          也许某人对以下版本感兴趣:

          function printNumbers(n){
              if(n >= 10) {
                  printNumbers(Math.floor(n / 10));
              }
              console.log(n % 10);
          }
          printNumbers(1234);
          // 1
          // 2
          // 3
          // 4
          

          【讨论】:

            猜你喜欢
            • 2016-01-01
            • 1970-01-01
            • 2022-01-18
            • 1970-01-01
            • 1970-01-01
            • 2017-02-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多