本帖最后由 曾虓 于 2012-4-17 08:18 编辑
先猜测楼主要的图形大概是:
*
***
*******
***
*
然后开始分析,上层层次是3,星号依次是1,3,7。也就是2的一次方到2的3次方减1。左边空格分别规律是(7-1)/2.(7-3)/2,(7-7)/2.
分析完成,开始编码。
代码如下:- public class Test {
- public static void main(String[] args) {
- int num = 3;// 上层层次 改变即可改变图形
- int mathNum = (int) Math.pow(2, num);
- for (int i = 1; i <= num; i++) {// 上半部分循环
- int m = (int) Math.pow(2, i);
- for (int j = 1; j <= (mathNum - m) / 2; j++) {//输出空格
- System.out.print(" ");
- }
- for (int j = 1; j <= m - 1; j++) {
- System.out.print("*");
- }
- System.out.println();
- }
- for (int i = num - 1; i >= 1; i--) {// 下半部循环
- int m = (int) Math.pow(2, i);
- for (int j = (mathNum - m) / 2; j >= 1; j--) {//输出空格
- System.out.print(" ");
- }
- for (int j = m - 1; j >= 1; j--) {
- System.out.print("*");
- }
- System.out.println();
- }
- }
- }
复制代码 结果如图:
把上层层次改为5,结果如图:
|