public static void printHourglass(int size , char symbol) {
printHourglass(size, 0, symbol);
}
public static void printHourglass(int size, int s, char symbol) {
stars(size, s,symbol);
if (size > 2) {
printHourglass(size - 2, s + 1, symbol);
stars(size, s,symbol);
}
}
public static void stars(int n, int s, char symbol) {
if (s > 0) {
System.out.print(" ");
stars(n, s - 1 , symbol);
} else if (n > 0) {
System.out.print(symbol);
stars(n - 1 , s, symbol);
} else {
System.out.println();
}
}
我的代码有点好,但我希望它的结果像这样
鉴于沙漏的大小为5. printHourglass()的预期输出: 黑色标记是空格,我希望我的代码打印下面的空格
备注:以下输出中的空格表示为暗框,新行显示为段落标记(¶)。
?????
█???█
██?██
█???█
?????
我现在的代码输出是这样的,没有右边的空格如何,我希望它打印上面的空间:
?????¶
█???¶
██?¶
█???¶
?????¶
失败
答案 0 :(得分:0)
如果您更改星号方法签名如下,您应该可以解决它
public static void stars(int size, int beg, int end, char symbol)
答案 1 :(得分:0)
int subtract = (int)Math.floor(size / 2);
for(int i = size - subtract; i >= 1; i--){
for(int j=i;j<size - subtract;j++){
System.out.print(' ');
}
for(int j=1;j<=i*2-1;j++){
System.out.print(symbol);
}
for(int j = i; j < size - subtract; j++){
System.out.print(' ');
}
System.out.println();
}
for(int i = 2; i <= size - subtract; i++)
{
for(int j=i;j<size - subtract;j++){
System.out.print(' ');
}
for(int j=1;j<=i*2-1;j++){
System.out.print(symbol);
}
for(int j = i; j < size - subtract; j++){
System.out.print(" ");
}
System.out.println();
}
感谢每一个试图帮助我的人和那个答案的人