50道经典的JAVA编程题(21-25),明天早上java考试了,还是坚持做题吧。。。这题比老师的题好多了!
【程序21】TestJieCheng.java
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘
javapackage test50;
/**
* @author VellBibi
*【程序21】TestJieCheng.java
*题目:求1+2!+3!+...+20!的和
*1.程序分析:此程序只是把累加变成了累乘。
*/
public class TestJieCheng {
/**
* 求n的阶乘
* @param n
* @return
*/
public static long jieCheng(int n){
if(n == 1) return 1;
else return jieCheng(n-1)*n;
}
public static void main(String[] args) {
long ans = 0;
for(int i=1; i<=20; i++){
ans = ans + jieCheng(i);
}
System.out.println(ans);
}
}
【程序22】
题目:利用递归方法求5!。 TestJieCheng2.java
1.程序分析:递归公式:fn=fn_1*4!递归函数详见【程序21】
javapublic static long jieCheng(int n){
if(n == 1) return 1;
else return jieCheng(n-1)*n;
}
【程序23】TestAge.java
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
javapackage test50;
/**
* @author VellBibi
*【程序23】TestAge.java
*题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。
*问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
*1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
*/
public class TestAge {
/**
* 获取第n个人的岁数
* @param n
* @return
*/
public static int getAge(int n){
if(n == 1) return 10;
else return getAge(n-1) + 2;
}
public static void main(String[] args) {
System.out.println(getAge(5));
}
}
【程序24】TestNumber.java
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
javapackage test50;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
/**
* @author VellBibi
*【程序24】TestNumber.java
*题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
*/
public class TestNumber {
/**
* 分解数字
* @param n
* @return
*/
public static List explodeNumber(long n){
List l = new ArrayList();
long cup = n;
while(cup != 0){
l.add((int) (cup%10));
cup = cup/10;
}
return l;
}
public static void main(String[] args) {
System.out.println("给一个不多于5位的正整数:");
Scanner s = new Scanner(System.in);
long n = 0;
if(s.hasNext()) n = s.nextInt();
List l = explodeNumber(n);
System.out.println("它是"+l.size()+"位数");
Iterator it = l.iterator();
while(it.hasNext()){
System.out.print(it.next());
}
}
}
【程序25】 HuiWenShu.java
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
javapackage test50;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* @author VellBibi
*【程序25】 HuiWenShu.java
*题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
*/
public class HuiWenShu {
/**
* 分解数字
* @param n
* @return
*/
public static List explodeNumber(long n){
List l = new ArrayList();
long cup = n;
while(cup != 0){
l.add((int) (cup%10));
cup = cup/10;
}
return l;
}
public static void main(String[] args) {
System.out.println("输入一个数:");
Scanner s = new Scanner(System.in);
long n = 0;
if(s.hasNext()) n = s.nextLong();
List l = explodeNumber(n);
Integer[] a = (Integer[])l.toArray(new Integer[]{});
for(int i=0; i<=a.length/2; i++) {
if(!a[i].equals(a[a.length-i-1])){
System.out.println("不是回文");
return;
}
}
System.out.println("是回文");
}
}