1

指定された数「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();
    }

どんなアイデアでも役に立ちます。

4

2 に答える 2

1

for最も外側にもう1つのループを追加します:-

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();
        }
    }

zから始まりますn - 2。最初のピラミッドの長さは2です。また、2番目の内側のループでは、条件がに変更されていることに注意してくださいi <= n - z

これで、元のループのセットはに対して実行3 times (n - 2) == 2されn = 4、ループはからまで実行さz = 2z = 0ます。そしてそれは高さのピラミッドを作成します(n - z):- (4 - 2) = 2、、背中合わせに(4 - 1) = 3(4 - 0) = 4

于 2012-11-18T18:35:56.647 に答える
0

ヒント:-

あなたが持っているコードは長さのピラミッドを生成しますn

言うまでforループするループの中にそれを囲みますcounter=n-1counter=0

既存のコードでvalue.ofnをtoに置き換えますn-counter+1

于 2012-11-18T18:36:09.780 に答える