感觉这种题目不是太适合用递归,不过既然你非得要,我也写了个出来。。
这个的输出结果是:2432902008176640000
- public static void main(final String args[]) throws Exception {
- new Main()._main(args);
- }
-
- private void _main(final String args[]) throws Exception {
- BigInteger num = factorial(20);
- System.out.println(num);
- }
-
- /**
- * 求 n 的阶乘
- * @param n 要被求阶乘的 n
- * @return n 的阶乘
- */
- public BigInteger factorial(int n) {
- // factorial(n, n - 1)
- return this.factorial(BigInteger.valueOf(n), n - 1);
- }
-
- /**
- * 递归求 n 的阶乘
- * @param num 当前结果
- * @param n n的剩余值(每次减1)
- * @return 当前结果
- */
- private BigInteger factorial(BigInteger num, int n) {
- if(n == 0) {
- return num;
- } else {
- num = num.multiply(BigInteger.valueOf(n));
- return factorial(num, n - 1);
- }
- }
复制代码
|