2013-10-02 58 views
0

我有這個功能,從1打印數量爲n像這樣一個三角形打印使用遞歸一個數字序列 - JavaScript的

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 

我需要關於如何使用遞歸來做這件事的指針,因爲我是編程的新手,我對如何做這件事毫無頭緒。

回答

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; 
} 
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)); 
0
Function doCounter(counter, I, n)   
{ 
    If(I>n) { 
     Console.log(counter); 
     doCount(counter+I, I++, n); 
    } 
} 

doCounter(1,0,4);

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