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));

    }

     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;
}

不过,就我个人而言,我更喜欢Jake King 回答的“蹦床方法” 。

于 2012-10-18T04:19:49.200 回答
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 回答