2017-01-28 22 views
-5

3! LOOPJavaで出力が必要

を使用せず= 3 = 6

* 2 * 1は、ありがとう!

下記のMy機能:

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

      return 1; 

     else  

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

ようこそスタックオーバーフロー!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(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の直ぐ問題を解決するかもしれませんが、コードは再使用されず、一度しか呼び出せないので、ユーザー入力コードをコンストラクタに入れるのは悪い習慣です。なぜ、コンストラクタで例外が発生したとしたら、JVMはオブジェクトの初期化を完了しますが、ここでは階乗は正しく作成されませんでした。そして、コンストラクターを2度目に呼び出すことはできません。 –

+1

@OPここでティムに聞いてください。コメントをいただき、ありがとうございます。 – GurV

0

グローバル変数(StringBuffer)を使用して、階乗法から数値を追加することができます。印刷時にこの変数をmainメソッドから使​​用します。

関連する問題