原本在课堂上我并未成功用递归的方法完成该题判断,看了同窗的程序后,我有了本身的思考:java
1)递归是运用到了栈的思想;函数
2)回文是一段从中间开始倒置的文字,回代的过程当中出现不一样的符号的时候就说明这段文字不是回文了spa
根据上面对回文判断的分析,就拿最简单的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 }
一、每一个递归函数的开头必定是判断递归结束条件是否知足的语句3d
二、提取问题结果,减少问题规模。code
三、递归函数的函数体至少有一句是本身调用本身。blog