使用递归打印一系列数字 - javascript

时间:2013-10-02 08:10:05

标签: javascript recursion

我有这个功能,它以三角形的方式打印从1到n的数字

    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

我需要使用递归来指示如何使用递归,因为我是编程的新手,我不知道如何做到这一点。

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

    function printNumbers(n, counter, result){
        counter = counter || 0;
        result = result || "";
        if (counter >= n) return result;
        return printNumbers(n, ++counter, result+""+counter);
    }
    alert(printNumbers(10));

答案 2 :(得分:0)

Function doCounter(counter, I, n)         
{
    If(I>n) {
        Console.log(counter);
        doCount(counter+I, I++, n);
    }
}

doCounter(1,0,4);

答案 3 :(得分:0)

您可以尝试这样的事情:

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

答案 4 :(得分:0)

function oneToN(n) {
  if (n == 0) {
    console.log(n);
    return n;
  } else {
    oneToN(--n);
    console.log(n + 1);
  }
}
oneToN(5);