0

メソッドの最終的な回答を出力する必要があります。しかし、それは計算全体を最後まで示しています!結果のみを取得するプロセスを削除するにはどうすればよいですか?

4

5 に答える 5

1

代わりに、別のメソッドからメソッドを呼び出して、最終的な値のみを出力します。

System.out.println(getFactorial(5));

メソッド内から本当にそれを行う必要がある場合は、次のように一種の「トランポリン」メソッドを作成できます。

private static int getFactorial(int userInput) {
    int fact = _getFactorial(userInput);
    System.out.println(fact);
    return fact;
}

private static int _getFactorial(int userInput) {
    // real implementation
}
于 2012-10-18T04:12:48.820 に答える
0
// Calculate the factorial value
private static int getFactorial(int userInput){
    int ans = userInput;
    if(userInput >1 ){

    ans*= (getFactorial(userInput-1));

    //System.out.println("The value of "+ b +"! is "+ ans);
    }
    return ans;
}

public static void main(String[] args)
{
    int ans;
    //get input
    ans = getFactorial(input);
    System.out.println("The value of "+ b +"! is "+ ans);
}
于 2012-10-18T04:28:57.557 に答える
0
// Calculate the factorial value
private static int getFactorial(int userInput){
    int ans = userInput;
    if(userInput >1 ){

    ans*= (getFactorial(userInput-1));

    }

     return ans;
}

関数の外側に印刷します

System.out.println("The value of "+ b +"! is "+ getFactorial(b));

最終的な答えが得られたら、一度だけ印刷してください。

于 2012-10-18T04:14:46.530 に答える
0

これは再帰的な関数呼び出しであり、特別な条件チェックなしですべてのケースで実行されます。別の方法からの印刷は良いオプションです。

private static int getFactorial(int userInput){
    int ans = userInput;
    if(userInput >1 ){

    ans*= (getFactorial(userInput-1));
    }
    return ans;

}
// New method;
private static void printFactorial(int userInput){
    System.out.println("The value of " + userInput + "! is " + getFactorial(userInput));
}
于 2012-10-18T04:16:47.353 に答える
0

値を返し、呼び出し元のコードから出力するという考えが気に入らないので、「答えを出力する」フラグを引数として追加できます。

// Calculate the factorial value
private static int getFactorial(int value, boolean print){
    if (value > 1) {

        value *= getFactorial(value-1, false);

        if (print) {
            System.out.println("The value of "+ b +"! is "+ value);
        }
    }
    return value;
}

個人的には、ジェイク・キングの答えの「トランポリン法」が好きです。

于 2012-10-18T04:19:49.200 に答える