Java 生成给定数字的金字塔?

Java 生成给定数字的金字塔?,java,for-loop,printf,Java,For Loop,Printf,我想为给定的数字“n”(“n”-也是最后一个金字塔的高度)生成一个金字塔堆栈。算法应该堆叠(n-1)个金字塔。结果应该是这样的: height of base pyramid: 4 2 2 4 2 2 2 4 2 2 4 8 4 2 2 2 4 2 2 4 8 4 2 2 4 8 16 8 4 2 我已经有了生成最后一个金字塔的代码块: for (i =

我想为给定的数字“n”(“n”-也是最后一个金字塔的高度)生成一个金字塔堆栈。算法应该堆叠(n-1)个金字塔。结果应该是这样的:

height of base pyramid: 4

          2
        2 4 2
          2
        2 4 2
      2 4 8 4 2
          2
        2 4 2
      2 4 8 4 2
   2 4 8 16 8 4 2
我已经有了生成最后一个金字塔的代码块:

for (i = 1; i <= n; i++) {
    for (j = 1; j <= n - i; j++)
        System.out.printf("%5s", "");
    for (k = 1; k < i; k++)
        System.out.printf("%5d", (int) Math.pow(2, k));
    for (k = i; k >= 1; k--)
        System.out.printf("%5d", (int) Math.pow(2, k));
        System.out.println();
    }

for(i=1;i在最外层添加一个
for
循环:-

for (int z = n - 2; z >= 0; z--)
因此,循环结构变为:-

for (int z = n - 2; z >= 0; z--) {
        for (int i = 1; i <= n - z; i++) {
            for (int j = 1; j <= n - i; j++)
                System.out.printf("%5s", "");
            for (int k = 1; k < i; k++)
                System.out.printf("%5d", (int) Math.pow(2, k));
            for (int k = i; k >= 1; k--)
                System.out.printf("%5d", (int) Math.pow(2, k));
            System.out.println();
        }
    }
用于(int z=n-2;z>=0;z--){

对于(int i=1;i在最外层添加一个
for
循环:-

for (int z = n - 2; z >= 0; z--)
因此,循环结构变为:-

for (int z = n - 2; z >= 0; z--) {
        for (int i = 1; i <= n - z; i++) {
            for (int j = 1; j <= n - i; j++)
                System.out.printf("%5s", "");
            for (int k = 1; k < i; k++)
                System.out.printf("%5d", (int) Math.pow(2, k));
            for (int k = i; k >= 1; k--)
                System.out.printf("%5d", (int) Math.pow(2, k));
            System.out.println();
        }
    }
用于(int z=n-2;z>=0;z--){
对于(int i=1;i提示:-

您拥有的代码生成一个长度为
n

将其封装在一个
for
循环中,循环时间为
counter=n-1
直到
counter=0

在现有代码中,将
n
的值替换为
n-counter+1
提示:-

您拥有的代码生成一个长度为
n

将其封装在一个
for
循环中,循环时间为
counter=n-1
直到
counter=0


在您现有的代码中,将
n
的value.of替换为
n-counter+1

好,那么该代码有什么问题?您可以将
(int)Math.pow(2,k)
简单地重写为
1好,那么该代码有什么问题?您可以将
(int)Math.pow(2,k)
简单地重写为
1@MukulGoel.haha:)是的,这就是为什么我认为我也应该提醒他。@MukulGoel.haha:)。是的,这就是为什么我认为我也应该提醒他。