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来生成所有可能的字符串。 –