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的數組
剛剛有代碼的一個問題?解釋你的問題先生! – Mritunjay
每個位置可以有兩個值'0'或'1'中的任何一個,所以在這裏第一次我們將'nnth'位設置爲'0'並對'n-1'位進行遞歸,然後我們使'nnth'位'1'和遞歸'n-1'位。這樣它通過將每個位置值設置爲0或1來生成所有可能的字符串。 –