题目:求1+2!+3!+…+20!和
分析:双重for循环很简单。
重点分析下递归方法:当我们去求20!时可以理解为20*19!,在理解为20*19*18!….最后变为20*19*18*…*1!;1的阶乘和为1。从这里可以看出递归的现象,定义递归开始和终止条件即完成了
package com.math.forth;
/***
* 求1+2!+3!+...+20!和
* 分析:双重for循环很简单。
* 重点分析下递归方法:当我们去求20!时可以理解为20*19!,在理解为20*19*18!....最后变为20*19*18*...*1!;1的阶乘和为1。
* 从这里可以看出递归的现象,定义递归开始和终止条件便结束。
*
* @author wql
*
*/
public class Math13 {
public static void main(String[] args) {
int sum = method();
System.out.println(sum);
// ----------------递归方法--------------------
int sum2 = 0;
//递归得到只是单个数字的阶乘和,题目要得到1到20所有数字阶乘和的和
for (int i = 1; i <= 20; i++) {
sum2 += method2(i);
}
System.out.println(sum2);
}
/**
* 递归方法:只是求一个数的阶乘和
*
* @return
*/
private static int method2(int num) {
if (num == 1) {
return 1; // 递归结束
} else {
return method2(num - 1) * num;// 递归开始
}
}
/**
* for循环方法
*
* @return
*/
public static int method() {
int sum = 0;
for (int i = 1; i <= 20; i++) {
int temp = 1;
for (int j = i; j >= 1; j--) {
temp *= j;
}
sum += temp;
}
return sum;
}
}