/*
* 求1+2!+3!+...+20!的和
* */
public class Demo21 {
public static void main(String[] args) {
// TODO Auto-generated method stub
long num=0;
long temp=1;
for (int j = 1; j <=20; j++) {
temp=temp*j;
num=num+temp;
System.out.println(num);
}
System.out.println("总和为:"+num);
}
}
package com.oracle.day161105_java50;
/*
* 【程序22】
题目:利用递归方法求5!。
程序分析:递归公式:fn=fn_1*4!
* */
public class Demo22 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("5的阶乘为"+fact(5));
}
public static long fact(int n){
if(n==1){
return 1;
}else{
return fact(n-1)*n;
}
}
}
package com.oracle.day161105_java50;
/*
* 题目:有5个人坐在一起,问第五个人多少岁?
* 他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。
* 问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。
* 最后问第一个人,他说是10岁。请问第五个人多大?
程序分析:利用递归的方法,递归分为回推和递推两个阶段。
要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
* */
public class Demo23 {
public static void main(String[] args) {
System.out.println(getAge(5));
}
//求第m位同志的年龄
private static int getAge(int m){
if(m==1){
return 10;
}else{
return getAge(m-1)+2;
}
}
}
package com.oracle.day161105_java50;
import java.util.Scanner;
/*
* 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
* */
public class Demo24 {
public static void main(String[] args) {
int unit ;//个
int decade;//十
int hundred;//百
int thousand;//千
int ten_thousand;//万
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个不多于5位的正整数:");
int n = sc.nextInt();
ten_thousand=n/10000;
thousand=(n-ten_thousand*10000)/1000;
hundred=(n-ten_thousand*10000-thousand*1000)/100;
decade=(n-ten_thousand*10000-thousand*1000-hundred*100)/10;
unit=(n-ten_thousand*10000-thousand*1000-hundred*100-decade*10);
System.out.println("万位:"+ten_thousand);
System.out.println("千位:"+thousand);
System.out.println("百位:"+hundred);
System.out.println("十位:"+decade);
System.out.println("个位:"+unit);
if(ten_thousand!=0){
System.out.println(n+"为五位数");
System.out.println("逆序打印:"+unit+decade+hundred+thousand+ten_thousand);
}else if(thousand!=0){
System.out.println(n+"为四位数");
System.out.println("逆序打印:"+unit+decade+hundred+thousand);
}else if(hundred!=0){
System.out.println(n+"为三位数");
System.out.println("逆序打印:"+unit+decade+hundred);
}else if(decade!=0){
System.out.println(n+"为二位数");
System.out.println("逆序打印:"+unit+decade);
}else if(unit!=0){
System.out.println(n+"为一位数");
System.out.println("逆序打印:"+unit);
}else{
System.out.println("输入数字不合题意!");
}
}
}
// 法二
//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]+" ");
//}
//}
package com.oracle.day161105_java50;
import java.util.Scanner;
/*
* 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
* */
public class Demo25 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int unit ;//个
int decade;//十
int hundred;//百
int thousand;//千
int ten_thousand;//万
Scanner sc = new Scanner(System.in);
System.out.println("请输入5位的正整数:");
int n = sc.nextInt();
ten_thousand=n/10000;
thousand=(n-ten_thousand*10000)/1000;
hundred=(n-ten_thousand*10000-thousand*1000)/100;
decade=(n-ten_thousand*10000-thousand*1000-hundred*100)/10;
unit=(n-ten_thousand*10000-thousand*1000-hundred*100-decade*10);
System.out.println("万位:"+ten_thousand);
System.out.println("千位:"+thousand);
System.out.println("百位:"+hundred);
System.out.println("十位:"+decade);
System.out.println("个位:"+unit);
if(unit==ten_thousand && decade==thousand) {
System.out.println(n+"是回文数");
}else{
System.out.println(n+"不是回文数");
}
}
}