打印我的递归因子结果

时间:2012-10-18 04:10:43

标签: java methods factorial println

我需要为我的方法打印我的最终答案。但是,它显示了整个计算结束!如何消除仅获得结果的过程?

5 个答案:

答案 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);
}