私はこれらの問題のいくつかに出くわしましたが、それに対処する最善の方法を本当に知りませんでした. 再帰関数を作成して回答を作成しているときに、現在の回答が機能しないことがわかった場合、何を返せばよいでしょうか。
たとえば、答えが ArrayList であると想定されている場合、それが機能しないと言って false を返すことはできません。- null や -1 などのセンチネル値を返して、再帰呼び出しで確認する必要がありますか? - または、関数は void を返すだけで、答えがあると判断した場合にのみ、関数の外部の変数に追加する必要があります - または、値を保持する追加のパラメーターを保存し、それが機能しない場合は無視する必要があります (I'現在の例でこれを行う方法がわかりません)-または、最初に機能するかどうかを確認してからアクションを実行する関数を用意する必要があります
私が現在理解しようとしている問題は、文字列内のすべての順列を計算することに似ています。違いは、順列で連続する 2 つの文字を含む順列は、アルファベットで同じ順序で連続することはできないということです。たとえば、「bc」は使用できません。「cb」で大丈夫です。それが私の質問の良い例かどうかはわかりませんが、そうでない場合でも、バックトラック再帰を扱うのはいつも不快に感じるので、私の質問は依然として有効です。