2016-11-14 70 views
2

我被問到一個採訪問題,指出:如何從一個打印一個數字到所提供的參數編號到一個遞歸函數?如何以相反順序調用遞歸函數?

說功能名稱是recursiveFunc。當我稱之爲

recursiveFunc(100); 

它應該打印1,2,3,等等。

請注意,它不應該使用任何其他幫助初始化等變量。

有什麼想法?遞歸後

void recursiveFunc(int n) 
{ 
    if (n == 0) 
    { 
     return; 
    } 
    recursiveFunc(n-1); 
    System.out.println(n); 
} 
+2

這與「逆序」有什麼關係? – ajb

+0

它必須這樣做。這只是一個小竅門,但邪惡。就像你做了一些事情然後自己調用一樣。但在這種情況下,你首先自稱,然後做一些使其逆轉的東西。 –

回答

3
public void recursiveFunc(int n) { 
    if (n <= 0) 
     return; 
    recursiveFunc(n-1); 
    System.out.println(n); 
} 

打印:

5

只是遞歸

public void recursiveFunc(int n) { 
    if (n <= 0) return; 
    recursiveFunc(n-1); // recurses 
    System.out.println(n); // prints 1 first 
} 
+0

它看起來對我來說等待讓我測試 –

+1

你已經得到相同的答案三次!不是招數 –

+0

Hurrrahhhhhhhhhhhhh。 –

5

喜歡的東西后打印的價值。

+0

這不是升序。這將打印降序。像100,99,98 –

+3

不可以。它會打印從1到100.您首先將堆棧從100下移到1,然後您正在打印。因此它將打印從1到100 – FallAndLearn

+0

你是老闆。兩個答案都是正確的。通話結束後,我沒有注意到打印。謝謝 –