我正在尝试打印一些真相表,作为学校作业的一部分。如何在Java中生成动态大小真值表?

这样printTruthTable(1)会输出:

0
1
printTruthTable(3)打印:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

等等。我一直在尝试使用递归来实现它,但是我无法正确实现它。

最佳答案

这是我对您的问题的看法,所有内容都写得很好,而且在一个小类里都紧紧地写着,只需复制/粘贴即可

注意我如何使用modulo2(%符号)从循环索引中获取0和1

public class TruthTable {
    private static void printTruthTable(int n) {
        int rows = (int) Math.pow(2,n);

        for (int i=0; i<rows; i++) {
            for (int j=n-1; j>=0; j--) {
                System.out.print((i/(int) Math.pow(2, j))%2 + " ");
            }
            System.out.println();
        }
    }
    public static void main(String[] args) {
        printTruthTable(3); //enter any natural int
    }
}

10-07 15:11