设计思想:
- 分析题目要求为判断回文数,回文数的特点为从前往后读与从后往前读都一样。例如:abccba。除此之外,当输入的字符长度为1或0的时候,系统也判断为回文数。(特例)
- 老师要求为使用递归函数,首先要有递归函数停止的条件,即为0或1或某些特例的情况下递归停止运行,除此之外,还要有一般情况。
- 编写代码 将特殊条件与一般条件分类,并判断递归能否在合适位置停止
程序源码:
1 import java.util.Scanner; 2 3 public class TestPalindrome { 4 5 public static Scanner sc=null; 6 static int b=0; 7 /** 8 * 使用递归判断是否是回文数 回文数: aaa aaa 从前往后读或从后往前读是一样的 9 * @param a 10 * @param b 11 * @return 12 */ 13 public static String judge(String a,int b) { 14 15 if(a.length()==0||a.length()==1||(a.length()/2)==b||b==(a.length()+1)/2) { 16 return "回文数!"; 17 } 18 else { 19 //a.charAt() 是从0开始计数的,最大位a.length()-1 20 if(a.charAt(b)!=a.charAt(a.length()-1-b)) 21 { 22 return "不是回文数!"; 23 }else { 24 b++; 25 return judge(a,b); 26 } 27 } 28 } 29 30 31 public static void main(String[] args) { 32 System.out.println("请输入字符串:"); 33 sc=new Scanner(System.in); 34 String c=sc.next(); 35 b=0; 36 System.out.println(judge(c,b)); 37 38 } 39 40 }
运行测试:
编程总结分析:
本次编程是对于回文数的判断分析,在编写程序过程中,由于我对回文数的概念理解不对,导致编程无法进行,这是一个最大的问题。对于编程,我首先应该理解所要解决的问题,真正去读懂,理解它,然会再去编程,而不是在一知半解的情况下去进行编程,用代码去实现它,这样,即便做出来了,也是不符合要求的。
在编译过程中用到了String类中的方法,例如:charAt()方法,返回指定索引处的char值。即返回一个char类型。Length()函数,返回String的长度。