public class GenerateAllStrings {
int []arrA;
public GenerateAllStrings(int n)
{
arrA = new int[n];
}
public void nBits(int n)
{
if(n <= 0)
System.out.println(Arrays.toString(arrA));
else
{
arrA[n-1] = 0;
nBits(n-1);
arrA[n-1] = 1;
nBits(n-1);
}
}
public static void main(String[] args) throws java.lang.Exception
{
int n = 3;
GenerateAllStrings i = new GenerateAllStrings(n);
i.nBits(n);
}
}
このプログラムでは再帰を理解できません。最初の値セットを印刷した後にnを1に設定する理由は何ですか(私はゼロにすべきだと思いました)?説明してください。すべてのnビットの文字列を生成すると考えると、A [0..n-1]はサイズnの配列です。
だけコードを有する質問を印刷
nBits(0)
を呼び出すことにより、0th
インデックスで配列エレメントは、nBits(1)
で1
に設定され、それはちょうど印刷ですか?あなたの問題を説明してください! – Mritunjay位置のそれぞれは、2つの値「0」または「1」のいずれかを持つことができるので、ここでは最初にn番目のビットを0に設定し、n-1ビットの再帰を行い、ビット「1」および「n-1」ビットに対する再帰を含む。このようにして、各位置の値を0または1に設定することによって、すべての可能な文字列を生成します。 –