第二次课堂测试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.递归需要每次返回调用,并在每次调用时都能减少运行复杂度。

原文地址:https://www.cnblogs.com/w669399221/p/11584907.html