第二次课堂测试1
1 package digui; 2 3 import java.util.Scanner; 4 5 public class Digui { 6 public static void main(String args[]) 7 { 8 String s; 9 Scanner sr=new Scanner(System.in); 10 System.out.println("请输入一段字符串"); 11 s=sr.next(); 12 int i=0,j=s.length()-1; 13 int sum=0; 14 if(s.length()==1) 15 { 16 System.out.println("字符串回文"); 17 18 } 19 else{ 20 if(di(s,i,j,sum)) 21 { 22 System.out.println("字符串回文"); 23 } 24 else 25 { 26 System.out.println("字符串不回文"); 27 } 28 29 } 30 } 31 public static boolean di(String s,int i,int j,int sum) 32 { 33 34 if(i==j&&sum%2==0&&sum!=0) 35 { 36 37 return true; 38 39 } 40 41 if(s.charAt(i)==s.charAt(j)) 42 { 43 sum+=2; 44 i++;j--; 45 } 46 else 47 return false; 48 return di(s,i,j,sum); 49 } 50 }
程序目的:是输入一行字符串然后判断字符串是否“回文”,就是判断字符串从前和从后读是否一样,如“我爱我”;
程序思想:用递归调用解决问题,每次调用都遍历字符串,同时从前和从后遍历,当下标表示i和j一样时循环终止,在循环中若是有前后对应位置的字符串不同就退出调用。最后在主函数中调用函数进行判断输出。
程序感悟:本次测试主要是测试递归的调用,本次测试后我总结了两点:
1.递归需要有终止条件(一般是if条件语句的判断);
2.递归需要每次返回调用,并在每次调用时都能减少运行复杂度。