【程序21】
题目:求1+2!+3!+…+20!的和
程序分析:此程序只是把累加变成了累乘。
1、先求该项阶乘的值
* 2、累加求求
public class Programme21 {
public static void main(String[] args) {
int sum=0;//总和
for (inti = 1; i <= 20;i++) {
sum+=factorial(i);//累加
}
System.out.println(""+sum);
}
//求阶乘的实现
private static int factorial(inti) {
//求阶乘
int mult=1;
for (intj=1 ; j <= i;j++) {
mult*=j;
}
returnmult;//返回阶乘结果
}
}
【程序22】
题目:利用递归方法求5!。
程序分析:递归公式:f(n)=n*f(n-1)
不断的调用方法,直到最小的值确定
public class Programme22 {
public static void main(String[] args) {
System.out.println(Fact(5));//输出结果值
}
//递归方法求阶乘的具体代码
private static int Fact(inti) {
if (i==1) {//1的阶乘为1
return 1;
}
returni*Fact(i-1);//不断回调
}
}
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
public class Programme23 {
public static void main(String[] args) {
System.out.println(“第五个人的岁数:”+GetAge(5,2));
}
//递归方法求第五个人的岁数
private static int GetAge(intnum, intageMore) {
if (num==1) {//第一个人岁数为10
return 10;
}
returnGetAge(num-1, ageMore)+ageMore;//每上一个人岁数加2
}
}
【程序24