我需要为我的方法打印我的最终答案。但是,它显示了整个计算结束!如何消除仅获得结果的过程?
答案 0 :(得分:1)
相反,从另一个方法调用您的方法,只打印最终值:
System.out.println(getFactorial(5));
如果你真的需要在方法内部进行,你可以创建一种“trampoline”方法,如下所示:
private static int getFactorial(int userInput) {
int fact = _getFactorial(userInput);
System.out.println(fact);
return fact;
}
private static int _getFactorial(int userInput) {
// real implementation
}
答案 1 :(得分: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));
当你得到最终答案时,只打印一次。
答案 2 :(得分: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));
}
答案 3 :(得分: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's answer的“蹦床方法”。
答案 4 :(得分: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);
}