實驗要求:使用遞歸的方式判斷一段字符串是否為回文。(回文是一種正着讀和反着讀都一樣的句子如“我是誰是我”)。
設計思想:先要求用戶輸入一句話,然后從這句話中選擇第一個字符與最后一個字符輸入函數dg,函數dg會首先判斷這句話是否為空,若為空測直接輸出為回文。否則如果輸入的這兩個字符相等就先判斷這兩個字符在字符串中的位置是否相等或相差為一。若是則輸出是回文,反之則繼續調用函數dg,進行遞歸。輸入字符的值為第一個字符的后一位與最后一個字符的前一位。而若這兩個字符不相等則可直接輸出不是回文。
程序源代碼:
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("輸入一句話");
String a=sc.next();
int b=a.length();
dg(a,0,b-1);
}
public static void dg(String a,int i, int j)
{
if(a.length()==0)
System.out.println("是回文! ");
if(a.charAt(i)==a.charAt(j))
{
if(i==j||j-i==1)
{
System.out.println("是回文! ");
}
else
dg(a,++i,--j);
}
else
System.out.println("不是回文!");
}
}
結果截圖:
編程總結分析:本程序使用了遞歸的方法,讓程序更加簡潔更具可讀性。
PSP0級:
日期 | 開始時間 | 結束時間 | 總時間 | 項目 | 備注 |
2018/9/23 | 3:30 | 3:45 | 15min | 判斷一段話是否為回文 | 要使用遞歸的方法 |