このタスクは実際には宿題として与えられましたが、宿題の割り当ての要件は、配列Aでいくつかの手順を実行した後、配列Aが配列Bと一致する場合にtrueまたはfalseを返すことができる再帰メソッドを作成することでした。この質問に再帰的に答えました。よりインテリジェントなアプローチがあるかどうか、このタイプの割り当てに対処するために使用できる特定のパターンまたは方程式があるかどうかを調べることに興味があります。宿題のタグはまだ関連していますが、念のために追加しました。
詳細は次のとおりです。同じ長さの2つのブール配列が与えられます。指定された配列「init」がターゲット配列「target」と一致する場合はtrueを返します。キャッチは次のとおりです。1つのインデックスの値をtrueからfalseに、またはその逆に「反転」するたびに、インデックスの値は左右になります。現在のインデックスの値も反転します(もちろん、そのようなインデックスが配列の範囲内にある場合)。次に例を示します。
boolean[] init = {true, false, true, false, true, false};
boolean[] target = {false, true, false, true, false, true};
この場合、init配列の最初のスポット[0]を反転できるため、答えは真です。結果は次のようになります。
boolean[] init = {false, true, false, false, true, false);
boolean[] target = {false, true, false, true, false, true};
次に、init配列の4番目のスポット[3]を反転し、init配列とターゲット配列が一致するようにします。
boolean[] init = {false, true, false, true, false, true};
boolean[] target = {false, true, false, true, false, true};
再帰的には、「反転状態」または「反転状態」なしの2つのオプションをテストし、各テストの配列のインデックスを進めていました。これにより、すべてのオプションが再帰的にチェックされ、一致するものが見つかった場合は最終的にtrueが返されます。
ここで私の質問に戻りますが、多くのオプションをチェックすることなく、この種の問題に対するより良いアプローチはありますか?再帰的である必要はありません...実際のところ、そうでない場合は最善かもしれません:)ですので、お気軽にアイデアや提案を共有してください。
ありがとう!