【程序20】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。
public class Prog20{
public static void main(String[] args){
double n1 = 1;
double n2 = 1;
double fraction = n1/n2;
double Sn = 0;
for(int i=0;i<20;i++){
double t1 = n1;
double t2 = n2;
n1 = t1+t2;
n2 = t1;
fraction = n1/n2;
Sn += fraction;
}
System.out.print(Sn);
}
}
【程序21】
题目:求1+2!+3!+...+20!的和
程序分析:此程序只是把累加变成了累乘。
public class Prog21{
public static void main(String[] args){
long sum = 0;
for(int i=0;i<20;i++)
sum += factorial(i+1);
System.out.println(sum);
}
//阶乘
private static long factorial(int n){
int mult = 1;
for(int i=1;i<n+1;i++)
mult *= i;
return mult;
}
}
【程序22】
题目:利用递归方法求5!。
程序分析:递归公式:fn=fn_1*4!
public class Prog22{
public static void main(String[] args){
System.out.println(fact(10));
}
//递归求阶乘
private static long fact(int n){
if(n==1)
return 1;
else
return fact(n-1)*n;
}
}
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
public class Prog23{
public static void main(String[] args){
System.out.println(getAge(5,2));
}
//求第m位同志的年龄
private static int getAge(int m,int n){
if(m==1)
return 10;
else
return getAge(m-1,n)+n;
}
}
【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
public class Prog24{
public static void main(String[] args){
int n = Integer.parseInt(args[0]);
int i = 0;
int[] a = new int[5];
do{
a[i] = n%10;
n /= 10;
++i;
}while(n!=0);
System.out.print("这是一个"+i+"位数,从个位起,各位数字依次为:");
for(int j=0;j<i;j++)
System.out.print(a[j]+" ");
}
}
|
|