0

我有这个功能,它以类似三角形的方式打印从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

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

4

6 回答 6

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;
}
于 2013-10-02T08:17:06.133 回答
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));
于 2013-10-02T08:20:57.983 回答
0
Function doCounter(counter, I, n)         
{
    If(I>n) {
        Console.log(counter);
        doCount(counter+I, I++, n);
    }
}

做计数器(1,0,4);

于 2013-10-02T08:21:00.823 回答
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,输出

于 2013-10-02T08:21:06.687 回答
0

这是Javascript版本:

function printNumbers(n){
    if(n >= 10) {
        printNumbers(Math.floor(n / 10));
    }

    console.log(n);
}

printNumbers(1234);

// 1
// 12
// 123
// 1234

也许 sb 对以下版本感兴趣:

function printNumbers(n){
    if(n >= 10) {
        printNumbers(Math.floor(n / 10));
    }
    console.log(n % 10);
}
printNumbers(1234);
// 1
// 2
// 3
// 4
于 2021-08-24T14:37:54.270 回答
0
function oneToN(n) {
  if (n == 0) {
    console.log(n);
    return n;
  } else {
    oneToN(--n);
    console.log(n + 1);
  }
}
oneToN(5);
于 2020-07-29T03:52:59.930 回答