一、設計思路
本來在課堂上我並未成功用遞歸的方法完成該題判斷,看了同學的程序后,我有了自己的思考:
1)遞歸是運用到了棧的思想;
2)回文是一段從中間開始倒置的文字,回代的過程中出現不同的符號的時候就說明這段文字不是回文了
根據上面對回文判斷的分析,就拿最簡單的121來說,要每個字符判斷直至2所在的位置,然后依次回代判斷前面的1和后面的1的位置。
二、源代碼
import java.util.Scanner; public class palindrome { public static void main(String arg[]) { String sz = new String(); Scanner sc = new Scanner(System.in); System.out.println("請輸入一個字符串:"); if (sc.hasNext()) { sz = sc.next(); if (ispalindrome(sz, 0)) System.out.println("是回文"); else System.out.println("不是回文"); } } public static boolean ispalindrome(String s, int n) { int num = s.length(); if (num / 2 != n) { if (ispalindrome(s, n + 1)) { if (s.charAt(n) == s.charAt(num - n - 1)) return true; else return false; } } else if (s.charAt(n) == s.charAt(num - n - 1)) return true; return false; } }
三、運行截圖
四、遞歸總結
1、每個遞歸函數的開頭一定是判斷遞歸結束條件是否滿足的語句
2、提取問題結果,減小問題規模。
3、遞歸函數的函數體至少有一句是自己調用自己。