gpt4 book ai didi

java - 三角形递归

转载 作者:行者123 更新时间:2023-11-30 04:53:02 26 4
gpt4 key购买 nike

所以我有一个程序,其中(通过递归)我应该接受用户输入(int)并根据数字绘制一个向后然后向前的三角形...例如下面

用户输入:4(忽略每个之间的多余空格,中间不应有多余的行)结果:

XXXX 
XXX
XX
X
X
XX
XXX
XXXX

我创建了一种方法,我认为应该这样做,但我遇到了问题

这是我到目前为止的代码

n 是输入的数字z 是一个计数器,用于尝试在向后/向前三角形之间移动

    public static String drawLine(int n, int z){

if(n!=0&& z<(n+1)){
for(int i=1;i<=n;i++)
System.out.print("X");
System.out.println();
z+=1;
drawLine(n-1,z);

return"";
}
else{
if( z==(2*n+1) ) return "";
z+=1;
String p = drawLine(n - 1,z);
p = p + "X";
System.out.println(p);


return p; }

}

错误消息是存在无限循环或溢出,但我找不到错误......请帮助!!

最佳答案

试试这个,这是一个更简单的选择:

public static void drawLine(int n) {
if (n > 0) {
printChar('X', n);
drawLine(n - 1);
printChar('X', n);
}
}

public static void printChar(char c, int n) {
for (int i = 0; i < n; i++)
System.out.print(c);
System.out.println();
}

请注意,递归方法只需要一个参数;让递归在到达基本情况( n <= 0 )后返回时打印正确数量的字符。

正如评论中提到的,最好返回 String或打印 String在方法内部,但不要混合使用两种方法(我选择了后者)。此外,为可重用的代码定义辅助方法也是一个很好的做法,例如 printChar在我的解决方案中。

关于java - 三角形递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450773/

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