一、设计思路
本来在课堂上我并未成功用递归的方法完成该题判断,看了同学的程序后,我有了自己的思考:
1)递归是运用到了栈的思想;
2)回文是一段从中间开始倒置的文字,回代的过程中出现不同的符号的时候就说明这段文字不是回文了
根据上面对回文判断的分析,就拿最简单的121来说,要每个字符判断直至2所在的位置,然后依次回代判断前面的1和后面的1的位置。
二、源代码
1 import java.util.Scanner;
2
3 public class palindrome {
4 public static void main(String arg[]) {
5 String sz = new String();
6 Scanner sc = new Scanner(System.in);
7 System.out.println("请输入一个字符串:");
8 if (sc.hasNext()) {
9 sz = sc.next();
10 if (ispalindrome(sz, 0))
11 System.out.println("是回文");
12 else
13 System.out.println("不是回文");
14 }
15 }
16
17 public static boolean ispalindrome(String s, int n) {
18 int num = s.length();
19 if (num / 2 != n) {
20 if (ispalindrome(s, n + 1)) {
21 if (s.charAt(n) == s.charAt(num - n - 1))
22 return true;
23 else
24 return false;
25 }
26 } else if (s.charAt(n) == s.charAt(num - n - 1))
27 return true;
28 return false;
29 }
30 }
知识兔三、运行截图
四、递归总结
1、每个递归函数的开头一定是判断递归结束条件是否满足的语句
2、提取问题结果,减小问题规模。
3、递归函数的函数体至少有一句是自己调用自己。