题目:求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; }}