题目
以下程序用于计算n的阶乘,请补充完整。public class Factorial { public static void main(String[] args) { int n = 5; int result = [填空1]; / 调用递归方法计算阶乘 System.out.println(n + "!" + result); } public static int factorial(int n) { if (n == 0 || n == 1) { return [填空2]; } else { return [填空3] * factorial(n-1); } }}
以下程序用于计算n的阶乘,请补充完整。 public class Factorial { public static void main(String[] args) { int n = 5; int result = [填空1]; // 调用递归方法计算阶乘 System.out.println(n + "!" + result); } public static int factorial(int n) { if (n == 0 || n == 1) { return [填空2]; } else { return [填空3] * factorial(n-1); } } }
题目解答
答案
根据阶乘定义:
1. 主方法中需调用`factorial(n)`,即`int result = factorial(n);`。
2. 递归方法中,当n = 0或1时,返回1。
3. 当n > 1时,返回`n * factorial(n-1)`。
完整代码如下:
```java
public class Factorial {
public static void main(String[] args) {
int n = 5;
int result = factorial(n);
System.out.println(n + "! = " + result);
}
public static int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
}
```
答案:
填空1:`factorial(n)`
填空2:`1`
填空3:`n`
解析
本题考查递归算法的知识以及阶乘的计算思路。解题的关键在于理解递归函数的工作原理,即通过不断调用自身来逐步计算阶乘。
下面我们一步一步进行计算:
- 对于填空1::
在主方法中,我们需要调用递归方法factorial来计算阶乘。已知n = 5,所以应该将n作为参数传递给factorial方法,即int result = factorial(n);`。 - 对于填空2:
在递归方法factorial中,当n == 0或者n == 1时,根据阶乘的定义,这是递归的终止条件,此时应该返回1。所以return 1;。 - 对于填空3:
当n > 1时,根据阶乘的定义,n的阶乘等于n乘以(n - 1)的阶乘。所以在递归调用应该返回n * factorial(n - 1)。