我想为给定的数字“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
在最外层循环:-
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。请注意,在第二个内循环中,您的条件更改为 i <= n - z
.
现在,您的原始循环集运行 3 times
(n - 2) == 2
对于 n = 4
,循环运行直到 z = 2
至z = 0
。它创建了一个高度金字塔 (n - z)
:-(4 - 2) = 2
, (4 - 1) = 3
, (4 - 0) = 4
背靠背。
关于java - 生成给定数字的金字塔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443188/