因此,我确实搜索并阅读了该网站上的每个析因列表,但似乎无法弄清楚我的代码有什么问题。 IV尝试了多种不同的返回方法,但它们都一直失败。有任何想法吗?

public class RecursivelyPrintFactorial {
    public static void printFactorial(int factCounter, int factValue) {
        int nextCounter = 0;
        int nextValue = 0;

        if (factCounter == 0) // Base case: 0! = 1
            System.out.println("1");
        }
        else if (factCounter == 1) // Base case: print 1 and result
            System.out.println(factCounter + " = " + factValue);
        }
        else { // Recursive case
            System.out.print(factCounter + " * ");
            nextCounter = factCounter - 1;
            nextValue = nextCounter * factValue;
        }

        return factValue * printFactorial(factValue - factCounter);

    }
}

    public static void main (String [] args) {
        int userVal = 0;

        userVal = 5;
        System.out.print(userVal + "! = ");
        printFactorial(userVal, userVal);

    }
}


我有种返回方程式不正确的感觉,但我尝试了我能想到的所有组合。它让我发疯。每个人都报告一个错误。有任何想法吗?

最佳答案

return factValue * printFactorial(factValue - factCounter);

我假设您应该使用“下一个”值而不是这些值。

编辑:另外请注意,该函数带有两个参数,并且是无效的。返回事实值乘以void没有意义。

10-04 13:14