1.设计思想:利用boolean函数,以及递归算法,如果没有字符或只有一个字符,就返回true,利用charAt判断对应位置的字符是否相等,主函数中调用函数,实现判断。
2.源程序代码:
package Palindrome;
import java.util.Scanner;
import java.lang.String;
public class Testp {
public class Testp {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
boolean t = Test(str,0,str.length()-1);
if(Test(str,0,str.length()-1))
System.out.println("该字符串是回文。");
else {
System.out.println("该字符串不是回文。");
}
}
public static boolean Test(String a,int f,int l) {
char ch1;
char ch2;
if(a.length()==0||a.length()==1) {
return true;
}
ch1 = a.charAt(f);
ch2 = a.charAt(l);
if(ch1==ch2&&f<=l) {
return true;
}
if(ch1!=ch2) {
return false;
}
return Test(a,f+1,l-1);
}
}
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
boolean t = Test(str,0,str.length()-1);
if(Test(str,0,str.length()-1))
System.out.println("该字符串是回文。");
else {
System.out.println("该字符串不是回文。");
}
}
public static boolean Test(String a,int f,int l) {
char ch1;
char ch2;
if(a.length()==0||a.length()==1) {
return true;
}
ch1 = a.charAt(f);
ch2 = a.charAt(l);
if(ch1==ch2&&f<=l) {
return true;
}
if(ch1!=ch2) {
return false;
}
return Test(a,f+1,l-1);
}
}
3.运行结果截图
4.总结分析:递归算法就是不断的调用自身解决问题,而且必须有循环终止条件,递归算法非常简洁,但是运行效率相对较低。