实例 21
题目
求 1! + 2! + 3! + … + 20! 的和。
分析
循环求 1 ~ 20 的阶乘,然后将其进行求和即可。
实现
/** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @website : https://cunyu1943.github.io * @date : 2021/6/3 22:48 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example21 * @description : */ public class Example21 { public static void main(String[] args) { long sum = 0; long fac = 1; for (int i = 1; i <= 20; i++) { fac *= i; sum += fac; } System.out.println("1!+2!+3!+……+20! = " + sum); } }
实例 22
题目
利用递归方法求 5!
分析
找到边界条件 num = 1
,然后调用 fac(num) = num * fac(num - 1)
即可!
实现
/** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @website : https://cunyu1943.github.io * @date : 2021/6/3 22:50 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example22 * @description : */ public class Example22 { public static void main(String[] args) { System.out.println("5! = " + fac(5)); } /** * 求 num 的阶乘 * * @param num * @return num 的阶乘 */ public static long fac(int num) { if (num == 1) { return 1; } else { return num * fac(num - 1); } } }
实例 23
题目
有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2 个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多大?
分析
其实就是一个反向遍历的过程,我们知道了第一个人的年龄,只要反推回去就可以知道第五个人的年龄了,这是一个等差数列。
实现
/** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @website : https://cunyu1943.github.io * @date : 2021/6/3 22:54 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example23 * @description : */ public class Example23 { public static void main(String[] args) { int age = 10; for (int i = 2; i <= 5; i++) { age += 2; } System.out.println("第 5 个人的年龄:" + age); } }
实例 24
题目
给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
分析
输入整数之后,然后将其转换为字符串,通过求字符串长度就知道这个数字时几位数了,然后再反向打印该字符串即可!
实现
import java.util.Scanner; /** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @website : https://cunyu1943.github.io * @date : 2021/6/3 23:14 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example24 * @description : */ public class Example24 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("输入一个整数"); long num = scanner.nextLong(); String str = Long.toString(num); System.out.println("该数是一个 " + str.length() + " 位数!"); System.out.print("该数逆序输出为:"); for (int i = str.length() - 1; i >= 0; i--) { System.out.print(str.charAt(i)); } } }
实例 25
题目
一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。
分析
既然已经限定了 5 位数,那么输入一个 5 位数之后,分解出各位上的数字,然后判断个位和万位、十位与千位是否相同即可!
实现
import java.util.Scanner; /** * Created with IntelliJ IDEA. * * @author : cunyu * @version : 1.0 * @email : 747731461@qq.com * @website : https://cunyu1943.github.io * @date : 2021/6/3 23:19 * @project : Java 编程实例 * @package : PACKAGE_NAME * @className : Example25 * @description : */ public class Example25 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("输入一个 5 位数"); int num = scanner.nextInt(); String str = Integer.toString(num); if (str.charAt(0) == str.charAt(str.length() - 1) && str.charAt(1) == str.charAt(str.length() - 1 - 1)) { System.out.println(num + " 是一个回文数"); } else { System.out.println(num + " 不是一个回文数"); } } }