Java经典算法大全 下载本文

内容发布更新时间 : 2024/11/15 14:23:49星期一 下面是文章的全部内容请认真阅读。

static long fac = 0;

public static void main(String[] args) { long sum = 0; long fac = 1;

for(int i=1; i<=10; i++) { fac = fac * i; sum += fac;

}

System.out.println(sum); }

}

/*【程序22】

* 作者 若水飞天

题目:利用递归方法求5!。

1.程序分析:递归公式:fn=fn_1*4! */

package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner;

public class Twenty_secondFactorialRecursion { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt();

Twenty_secondFactorialRecursion Twenty_secondFactorialRecursion(); System.out.println(tfr.recursion(n)); }

public long recursion(int n) { long value = 0 ;

if(n ==1 || n == 0) { value = 1;

} else if(n > 1) {

value = n * recursion(n-1); }

return value; } }

/*【程序23】

* 作者 : 若水飞天

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。

问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。

问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。

要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。 **/

16

tfr = new

package cn.com.flywater.FiftyAlgorthm; public class Twenty_thirdPeopleAge { public static void main(String[] args) { int age = 10;

for(int i=2; i<=5; i++) { age += 2;

}

System.out.println(age); }

}

/*【程序24】

* 作者 若水飞天

题目:给一个不多于5位的正整数,

要求:一、求它是几位数,二、逆序打印出各位数字。

说明: 这个算法实现虽然实现了这个功能,但不健壮,当输入字符是,会出现异常。 */

package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner;

public class Twenty_fourthNumber { public static void main(String[] args) {

Twenty_fourthNumber tn = new Twenty_fourthNumber(); Scanner s = new Scanner(System.in); long a = s.nextLong();

if(a < 0 || a > 100000) {

System.out.println(\ System.exit(0); }

if(a >=0 && a <=9) {

System.out.println( a + \是一位数\

System.out.println(\按逆序输出是\ } else if(a >= 10 && a <= 99) { System.out.println(a + \是二位数\ System.out.println(\按逆序输出是\ tn.converse(a);

} else if(a >= 100 && a <= 999) { System.out.println(a + \是三位数\ System.out.println(\按逆序输出是\ tn.converse(a);

} else if(a >= 1000 && a <= 9999) { System.out.println(a + \是四位数\ System.out.println(\按逆序输出是\

17

tn.converse(a);

} else if(a >= 10000 && a <= 99999) { System.out.println(a + \是五位数\ System.out.println(\按逆序输出是\ tn.converse(a); } }

public void converse(long l) { String s = Long.toString(l); char[] ch = s.toCharArray(); for(int i=ch.length-1; i>=0; i--) { System.out.print(ch[i]); }

} }

这个算法实在太土了,也许只有我若水飞天才会这样写, 下面写一个优雅一点的 import java.util.Scanner;

public class Twenty_fourthNumber { public static void main(String[] args) {

Twenty_fourthNumber tn = new Twenty_fourthNumber(); Scanner s = new Scanner(System.in); long a = s.nextLong();

String s = Long.toString(l); char[] ch = s.toCharArray();

System.out.println(a + \是\“位数”); for(int i=ch.length-1; i>=0; i--) { System.out.print(ch[i]); } }

}

/*【程序25】

* 作者 若水飞天

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

**/

package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner;

public class Twenty_fifthPalindrom { static int[] a = new int[5]; static int[] b = new int[5];

public static void main(String[] args) {

18

boolean is =false;

Scanner s = new Scanner(System.in); long l = s.nextLong();

if (l > 99999 || l < 10000) {

System.out.println(\, please input again!\ l = s.nextLong(); }

for (int i = 4; i >= 0; i--) {

a[i] = (int) (l / (long) Math.pow(10, i)); l =(l % ( long) Math.pow(10, i)); }

System.out.println();

for(int i=0,j=0; i<5; i++, j++) { b[j] = a[i]; }

for(int i=0,j=4; i<5; i++, j--) { if(a[i] != b[j]) { is = false; break; } else { is = true; }

}

if(is == false) {

System.out.println(\ } else if(is == true) {

System.out.println(\ } }

}

这个更好,不限位数

public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print(\请输入一个正整数:\ long a = s.nextLong(); String ss = Long.toString(a); char[] ch = ss.toCharArray(); boolean is =true; int j=ch.length;

19

for(int i=0; i

if(ch[i]!=ch[j-i-1]){is=false;} }

if(is==true){System.out.println(\这是一个回文数\ else {System.out.println(\这不是一个回文数\ }

/*【程序26】

* 作者 若水飞天

题目:请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样,则继续 判断第二个字母。 1.程序分析:用情况语句比较好,如果第一个字母一样,

则判断用情况语句或if语句判断第二个字母。

此程序虽然实现了基本功能,但必须严格按照题目的要求输入,否则程序无法执行 **/

package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner;

public class Twenty_sixthWeek {

Scanner s = new Scanner(System.in); public static void main(String[] args) {

Twenty_sixthWeek tw = new Twenty_sixthWeek(); char ch = tw.getChar(); switch(ch) { case 'M':

System.out.println(\ break; case 'W':

System.out.println(\ break; case 'F':

System.out.println(\ break;

case 'T': {

System.out.println(\ char ch2 = tw.getChar();

if(ch2 == 'U') {System.out.println(\ else if(ch2 == 'H') {System.out.println(\ }; break; case 'S': {

System.out.println(\ char ch2 = tw.getChar();

if(ch2 == 'U') {System.out.println(\

20