2回目のクラステスト1

5676 ワード

 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 }

プログラムの目的:1行の文字列を入力して文字列が“回文”かどうかを判断して、文字列が前と後から読むのと同じかどうかを判断して、“私は私を爱します”のようです;
プログラム思想:再帰呼び出しで問題を解決し、呼び出すたびに文字列を遍歴し、同時に前後を遍歴し、下付きがiとjを表すと循環が終了し、循環中に前後の対応位置の文字列が異なると呼び出しを終了する.最後にメイン関数で関数を呼び出して判定出力を行う.
プログラム悟り:今回のテストは主に再帰的な呼び出しをテストし、今回のテストの後、私は2つの点をまとめました.
1.再帰には終了条件(一般的にif条件文の判断)が必要である.
2.再帰は呼び出しを返すたびに必要であり、呼び出すたびに実行の複雑さを減らすことができます.
 
転載先:https://www.cnblogs.com/w669399221/p/11584907.html