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