java 中的数字金字塔嵌套循环

Number Pyramid Nested Loop in java

我想知道你是否可以帮助我。我正在尝试在 java 中编写一个嵌套的 for 循环,它显示一个看起来像这样的数字金字塔;

            1
          2 1
        4 2 1
      8 4 2 1
   16 8 4 2 1
32 16 8 4 2 1

这是我目前拥有的:

 int n = 32;
        for (int i = 1; i <= n; i *= 2) {
            for (int k = 1; k <= i; k *= 2) {
                System.out.print(k + "\t");
            }
            System.out.println();
        }

如何让输出正确显示

首先您需要计算您的金字塔需要多少层。如果我没记错的话应该是ceil(log2(n)) + 1。之后你可以遍历关卡并填充它们。还要记得在每个级别后打印一个新行。

您可以还原一个计数器并添加一个 for 来关注选项卡:

    int n = 32;
    for (int i = 1; i <= n; i *= 2) {
        for (int j = i; j < n; j *= 2)
            System.out.print("\t");
        for (int k = i; k >= 1; k /= 2)
            if (i == k)
                System.out.print(k);
            else
                System.out.print("\t" + k);
        System.out.println();
    }

在解决这个问题时"exercise"我遇到了两个问题。

  1. 您需要知道要打印多少行。使用此信息,您可以计算每行前面需要多少个空 space。

  2. 你需要知道最大数的位数。这需要在打印每个数字时预留足够的space。这是我的结果。

                    1
                 2  1
              4  2  1
           8  4  2  1
       16  8  4  2  1
    32 16  8  4  2  1
    

此外,我将使用您想要的行数而不是最大行数来启动程序。这对我来说似乎更容易。