Java中的完整解决方案
public static void draw(int w){
draw(w, 0);
}
public static void draw(int W, int s){
stars(W, s);
if (W > 2) {
draw(W-2, s+1);
stars(W, s);
}
}
public static void stars(int n, int s){
if(s > 0){
System.out.print(" ");
stars(n, s-1);
} else if (n > 0){
System.out.print("*");
stars(n-1, s);
} else {
System.out.println();
}
}
引入了参数s来跟踪中心星号所需的空格数
另一种方法是使用一些全局参数来跟踪总宽度并进行减法,但你似乎非常喜欢递归。
此代码
for(int i = 1; i < 7; i++){
System.out.println("An hourglass of width " + i);
draw(i);
System.out.println();
}
现在输出这个
An hourglass of width 1
*
An hourglass of width 2
**
An hourglass of width 3
***
*
***
An hourglass of width 4
****
**
****
An hourglass of width 5
*****
***
*
***
*****
An hourglass of width 6
******
****
**
****
******