gpt4 book ai didi

java - 使用星号创建沙漏

转载 作者:行者123 更新时间:2023-12-01 13:21:00 25 4
gpt4 key购买 nike

我想使用“*”字符创建一个沙漏。例如,如果用户输入是 5,那么它将如下所示:

*****
***
*
***
*****

和 3 看起来像这样:

 ***
*
***

到目前为止我已经:

public static void draw(int W){
stars(W);
if (W > 1) {
draw(W-1);
stars(W);
}
}
public static void stars(int n){
System.out.print("*");
if(n>1) stars(n-1);
else System.out.println();
}

它创造了

 *****
****
***
**
*
**
***
****
<小时/>

最佳答案

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
******
****
**
****
******

关于java - 使用星号创建沙漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22031016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com