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

doCounter(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,output

于 2013-10-02T08:21:06.687 に答える