2016-01-29 181 views
1

我正在測試java中的很多選項,所以我想在java中做一個簡單的遞歸函數。簡單的遞歸階乘函數

我使用控制檯執行程序,它接收參數,但總是當我嘗試與應大於1的任何參數的遞歸,它顯示爲0。

public class rec{ 
    public static void main (String[] args) { 
     int h = 0; 
     int numero = Integer.parseInt(args[0]); 
     int factor = 0; 

     if (numero == 0 || numero == 1){ 
      System.out.println(1); 
     } else { 
      int xpi = factorial(numero-1); 
      System.out.println(factor); 
     } 
    } 

    public static int factorial (int n){ 
     System.out.println("lol"); 
     if(n==0) { 
      return 0; 
     } else{ 
      return n* (n-1); 
     } 
    } 
} 
+2

我認爲這將是更容易將代碼粘貼到你的問題,這樣你將有一個[MCVE] http://stackoverflow.com/help/mcve )。 – rgettman

+0

@rgettman即時通訊不能做,因爲stackoverflow說代碼很奇怪或類似的東西,我會再試一次。 –

+0

如果您希望獲得幫助,請在您的問題中粘貼([編輯])代碼的相關部分。 –

回答

1

您的方法不是遞歸的,因爲它不會自我調用。這將是遞歸的例子:(

public static int factorial(int n) { 
    return n == 0 ? 1 : n * factorial(n-1); 
} 
+0

所以遞歸意味着必須自行調用!好的,我的感謝,對我和其他人都很有用 –

3

看看這些線你的代碼:

int xpi = factorial(numero-1); 
System.out.println(factor); 

你把函數的結果xpi變量,但你打印factor變量。打印xpi應該工作。

System.out.println(xpi); 
+0

好,但其他一切都是錯誤的。 –