原本在課堂上我並未成功用遞歸的方法完成該題判斷,看了同窗的程序後,我有了本身的思考: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