题目要求:使用递归方式判断某个字串是否是回文( palindrome )回文”是指正着读、反着读都一样的句子。比如“我是谁是我”
设计思想:首先能实现可输出任意字符串,然后定义返回值数据类型,判断递归结束条件的方法是在递归函数中通过将字符串转换为数组的方法来判断字符串中首尾位置是否相同,以此类推直到整个字符串判断完。
代码:
package digui;
import java.util.Scanner;
public class Palindrome {
static Scanner sc=new Scanner(System.in);
public static void main(String[] args) {
System.out.print("请输入一个字符串:");
String str=sc.next(); //输入一个想要判断的字符串
boolean mm=find(str,0,str.length());
System.out.println(mm);
}
private static boolean find(String str,int n1,int n2) {
if(n2<=1) //判断递归结束条件
return true;
else if(str.toCharArray()[n1]==str.toCharArray()[n2-1]){ //判断递归结束条件
return find(str,n1+1,n2-1);
}
return false;
}
}
运行结果:
请输入一个字符串:我爱你爱我
true
编程总结分析:
在这道题中体现了递归的思想,即每个递归函数的开头一定是判断递归结束条件是否满足的语句(一般是if语句);函数体一定至少有一句是“自己调用自己”的。每个递归函数一定有一个控制递归可以终结的变量(通常是作为函数的参数而存在)。每次自己调用自己时,此变量会变化(一般是变小),并传送给被调用的函数。