递归调用的使用:采用递归编写求n!的方法,求1!+2!+…+20!java
时间: 2024-10-09 14:02:00 浏览: 36
递归是一种函数或过程在其定义或实现中直接或间接地调用自身的技巧。对于计算阶乘,这是一个非常适合使用递归的例子。阶乘(n!)是指所有小于及等于n的正整数的乘积。例如,5! = 5 * 4 * 3 * 2 * 1。
以下是使用递归来求1! + 2! + ... + 20! 的Java代码示例:
```java
public class FactorialSum {
public static void main(String[] args) {
int n = 20;
long sumOfFactorials = factorialSum(n);
System.out.println("1! + 2! + ... + " + n + "!: " + sumOfFactorials);
}
// 递归函数,计算阶乘
private static long factorial(int num) {
if (num == 0 || num == 1) { // 基线条件:0! 和 1! 等于1
return 1;
} else {
// 递归条件:n! = n * (n - 1)!
return num * factorial(num - 1);
}
}
// 递归求和,将每个阶乘加起来
private static long factorialSum(int n) {
long result = 0;
for (int i = 1; i <= n; i++) {
result += factorial(i); // 递归调用factorial() 函数
}
return result;
}
}
```
在这个代码里,`factorial()` 函数负责计算单个阶乘,而 `factorialSum()` 函数则通过循环和递归的方式累加所有的阶乘。注意递归可能会导致栈溢出,特别是对于较大的n值,所以实际应用中可能需要考虑优化或者改用迭代方法。
阅读全文