40道java经典算法(三)(21-30)

这篇博客展示了40道Java算法问题的解决方案,包括计算阶乘的累加、递归求解、年龄递推、数字逆序输出、回文数判断、星期判断、素数查找、排序、矩阵对角线和以及有序数组插入等。通过这些实例,读者可以深入理解Java编程中的算法应用。
摘要由CSDN通过智能技术生成

/*【程序21】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
*/
package cn.com.flywater.FiftyAlgorthm;
public class Twenty_firstFactorialSum {
static long sum = 0;
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 tfr = new 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岁),再往回推。
**/
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("Error Input, please run this program Again");
    System.exit(0);
   }
 
   if(a >=0 &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值