这是主题:
我有一个LinkedList list,如果列表有3个元素,我想列出一个完整的真值表,例如:
a b c <--- the three elements in list
0 0 0
0 0 1
0 1 0
1 0 0
1 1 1
1 1 0
1 0 1
0 1 1
Run Code Online (Sandbox Code Playgroud)
如果列表有4个或更多元素,我想生成一个更大的表.
但是我被困在这里:
我知道写这样的循环可以生成整个表:
for (int a = 0; a < 2; a++){
for (int b = 0; b < 2; b++) {
for (int c = 0; c < 2; c++) {
for (int d = 0; d < 2; d++) {
System.out.println(a + " " + b + " " + c + " " + d);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我无法根据列表大小更改循环次数,我认为为此编写特殊情况是不可接受的,那么有没有其他方法可以做到这一点?
Pra*_*nth 12
如果你只想要一个真值表,简单的解决方案:
码:
int len = 3;
int num = (int)Math.pow(2, len);
for(int i=0; i<num; i++){
// http://stackoverflow.com/a/4421438/1273830
System.out.println(String.format("%"+len+"s", Integer.toBinaryString(i)).replace(' ', '0'));
}
Run Code Online (Sandbox Code Playgroud)
基本数字逻辑:真值表是二进制数字序列.