テスト対象:
文字列が回文(パリンドローム)「パリンドローム」であるか否かを決定する再帰的方法は、正しい読み、全て同じ文章を読んだと反対です。例えば、「私は私が誰です。」
デザインのアイデア:
まず、回文配列は、子供の異なるペアが、それはパリンドローム配列でない場合は、各文字の対称的な位置は、同じであると判断されていません
第二に、アレイの子と対称位置の各インデックスは全長-1に等しく、この特徴によれば、子データのそれぞれをとることができます
第三に、経由配列は、すべてのデータを取得するために、アレイの半分の内容を取る必要が
第四に、我々は、インデックスによって再帰的に(長さ)は、Nから開始することができ、各々は、インデックスN-1を取り、長さNは、データ比較を行い、nは1各再帰デクリメントされます
配列要素の数が奇数の場合、最後の文字の比較は、パリンドローム配列である場合、それが偶数である場合に第五に、次いで、、残りの文字0の比率は、パリンドローム配列です。
ソースは以下のとおりです。
1つの パブリック クラスのテスト{ 2 3 パブリック 静的 ブール isTrue(文字列str、int型N) 4 { 5 int型の長さ= str.length()。 6 場合(N == 0 || N == 1 ) 7 戻り 真。 8 他の 9 { 10 であれば(str.charAt(N-1)== str.charAt(長さ- N)) 11 { 12 リターン isTrue(STR、 - N)。 13 } 14 他 15 戻り falseに; 16 } 17 } 18である 19。 パブリック 静的 ボイドメイン(文字列[]引数){ 20は、 スキャナスキャナ= 新しい新しいスキャナ(System.in); 21である 文字列= Scanner.next(); 22は、 IF (isTrue(文字列、文字列.LENGTH())) 23で のSystem.out.println( "パリンドローム配列" ); 24 他の 25 のSystem.out.println( "ないパリンドローム配列" ); 26である 27 } 28 }
テスト結果:
概要分析:
最初のプログラミングの前に適切なアルゴリズムを選択する必要があり、データが大きすぎる場合、あなたは少量のデータを再帰的にすることができ、再帰べきではありませんが、再帰的なアルゴリズムは、人々の考え方に、より関連性がある、とコードが短く理解することは簡単ですが、その足跡は必要で、大きいです使用する権利の時間。
プログラミングが必要である前にまず第一に、より有効であることができる段階的詳細化を行って、全体的なフレームワークで、大規模な棚を概説するために、手の中に(構造)分析を受けることが。