gpt4 book ai didi

java - 需要帮助将迭代过程转换为递归过程

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

我正在尝试转换以下迭代代码:

int rows = 3;

for (int i = 0; i <= rows; i++)
{
for (int j = 0; j < i; j++)
{
System.out.print("*");
}

for (int j = 0; j < rows-i; j++)
{
System.out.print("-");
}


System.out.println();
}

输出:

---
*--
**-
***

到递归代码。这是为了一个任务。我创建了迭代代码,希望能够弄清楚如何将其直接转换为递归。这是我的努力:

public void stringY(int star, int count){
if (star > 0){
System.out.print("*");
stringY(star - 1, count);
}
}

public void stringX(int dash,int count){
if (dash == -1) {
return;
}else if (dash < count){
System.out.print("-");
stringX(dash - 1, count);
} else if (dash == count){
stringX(dash - 1, count);
}
}


public void printPattern(int n) {
if (n == -1){
return;
} else {
printPattern(n-1);
stringY(n, n);
stringX(n, n);
System.out.println();

}

}

我的问题是,虽然我得到了我正在寻找的关于模式的“*”部分的输出,但我完全不知道如何获取模式的“-”部分。既然这是一项任务,我不需要任何解决方案,但绝对欢迎任何正确方向的指示。我应该注意,我的两个要求是:1)我必须在不使用循环的情况下完全完成我的作业,2)我可以根据需要使用尽可能多的辅助方法,但主要调用方法(printPattern)必须保持 public void 并且必须继续只接受整数。进一步说明:递归代码块中的其他两个方法是我创建的辅助方法。

最佳答案

首先让 m = 要打印的“*”数量,让 n = 要打印的“-”数量

对于每次递归,将 m 加 1,将 n 减 1。

public static void main(String[] args) {
printPattern(3);
}

public static void printPattern(int n) {
printing(n, n);
}

//Variable size basically represent the number of columns
public static void printing(int n, int size) {
//stop condition
if(n == -1)
return;

//m is the number of * to print
int m = size - n;
printAsterisk(m);

//n is the number of - to print
printHyphen(n);

System.out.println();

printing(n - 1, size);
}

public static void printAsterisk(int m) {
if(m == 0)
return;
System.out.print('*');
printAsterisk(m - 1);
}

public static void printHyphen(int n) {
if(n == 0)
return;
System.out.print('-');
printHyphen(n - 1);
}

关于java - 需要帮助将迭代过程转换为递归过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43434546/

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