2017-01-28 110 views
-5

3! = 3 * 2 * 1 = 6Java需要的輸出

無需使用循環

謝謝!

我下面的功能:

public static int factorial(int n) 
    {  
     if ((n == 1) || (n == 0)) 

      return 1; 

     else  

      return(n * factorial(n-1)); 
    } 
+0

歡迎來到Stack Overflow!看起來你正在尋求作業幫助。雖然我們本身沒有任何問題,但請觀察這些[應做和不應該](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),並相應地編輯您的問題。 –

+0

您的遞歸階乘方法看起來正確。但是,在一個奇怪的事件轉向中,您決定從'FF'構造函數獲取用戶輸入。這是不尋常的,不應該這樣做。 –

+0

不知道你在問什麼 - 你目前沒有循環,你有遞歸。 – luk2302

回答

1

可以打印在因法通過這樣的參數值:

創建一個函數:

public static int factorial(int n) { 
     System.out.print(n); // here 
     if (n > 1) System.out.print("*"); // and here 
     if ((n == 1) || (n == 0)) 
      return 1; 
     else { 
      return (n * factorial(n - 1)); 
     } 
    } 

產地:

3!=3*2*1=6 
+0

非常感謝你! :) –

+1

雖然這可能解決OP的直接問題,但在我看來,不好的做法是將用戶輸入代碼放入構造函數中,因爲代碼不是reusale,只能調用一次。爲了明白爲什麼,假設在構造函數中發生異常,那麼JVM將完成初始化對象,但是現在不會正確創建階乘。我們不能再次調用構造函數。 –

+1

@OP你應該在這裏聽蒂姆。蒂姆,感謝您的評論。 – GurV

0

您可以使用全局變量(StringBuffer),並從factorial方法向其添加數字。打印時,使用main方法中的此變量。