【发布时间】:2014-10-31 20:47:20
【问题描述】:
所以我一直在为此绞尽脑汁,虽然代码有效,但它以绝对错误的顺序打印它。我觉得我错过了一些东西,所以我可以多用一双眼睛。
void recursiveBitPatterns(ArrayList<String> subsets, int n)
{
if (n==1)
{
subsets.add("0");
subsets.add("1");
return;
}
recursiveBitPatterns(subsets, n-1);
int asize = subsets.size();
for(int i=0; i<asize; i++)
{
String nsub = subsets.get(i);
subsets.set(i, nsub +"0");
subsets.add(nsub + "1");
}
}
似乎将 arraylist 的第二个元素设置为 1,但没有在循环中覆盖它。
这打印:
000 100 010 110 001 101 011 111
任何帮助将不胜感激
【问题讨论】:
-
代码应该做什么?什么输入产生了那个输出,你期望什么输出?
-
您的意思是“打印一组 N 个元素中的所有子集”吗?
-
这是 LSB 在前而不是 MSB 在前。
-
@VitJaybird 我已经明白你想展示什么了。我已经修改了你的代码,看下面。
标签: java recursion arraylist binary