回文序列判斷


 一、設計思路

本來在課堂上我並未成功用遞歸的方法完成該題判斷,看了同學的程序后,我有了自己的思考:

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、遞歸函數的函數體至少有一句是自己調用自己。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM