gpt4 book ai didi

java - 坚持 Java 中的递归模式(ZigZag)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:20 24 4
gpt4 key购买 nike

语言:Java

我遇到了应该产生以下模式的递归方法的问题:

Zigzag 1
*

Zigzag 2
*
**
*

Zigzag 3
*
***
*

Zigzag 4
*
**
*
****
*
**
*

Zigzag 6
*
***
*
******
*
***
*

Zigzag 8
*
**
*
****
*
**
*
********
*
**
*
****
*
**
*

这是我目前所拥有的:

public void printZigZag(int size, int indent) {
if(size > 0 && indent >= 0){
String temp = "";

for(int i = 0; i < indent; i++){
temp += " ";
}
for(int i = 0; i < size; i++){
temp += "*";
}


printZigZag(size/2, indent);

/* Example of something I've tried...
if(size != 1){
indent++;
}

if(size % 2 != 0){
indent = temp.length() - 2;
} else {
indent = temp.length() / 2;
}
*/

System.out.println(temp);
printZigZag(size/2, ++indent);
}
}

但是该代码产生了这个(Zigzag # 是大小):

Zigzag 1
*

ZigZag 2
*
**
*

ZigZag 3
*
***
*

ZigZag 4
*
**
*
****
*
**
*

ZigZag 6
*
***
*
******
*
***
*

ZigZag 8
*
**
*
****
*
**
*
********
*
**
*
****
*
**
*

几天来我一直在研究这个问题,有各种不同的 if 语句和语句顺序,但无法弄清楚我哪里出错了。

非常感谢您提供的任何帮助,在此先感谢您。

附言。抱歉发了这么大的帖子。

最佳答案

看起来递归模式是:

zigZag(1): print *
zigZag(n): zigZag(n / 2), print n times *, zigZag(n / 2)

只需注意缩进因素。试试这个:

public class ZigZag {
public static void main(String[] args) {
int n = 4;

zigZag(n, 0);
}

public static void zigZag(int n, int i /* indentation factor */) {
if(n > 1)
zigZag(n / 2, i);

for(int k = i; k > 0; k--)
System.out.print(" ");

for(int k = n; k > 0; k--)
System.out.print("*");

System.out.println();

if(n > 1)
zigZag(n / 2, i + n / 2);
}
}

关于java - 坚持 Java 中的递归模式(ZigZag),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318173/

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