创建一个递归方法,该方法接收一个正整数作为输入,以创建星型。
(如果输入为4):
*
**
***
****
****
***
**
*从这个问题中,我假设它只收到它的方法的参数中的一个输入。下面是我试图创建的方法:
public class main{
public static void main(String[] args){
numToPattern(4);
}
public static void numToPattern(int x){ //one input parameter
if(x<=0)
System.out.print("");
else{
System.out.println();
System.out.print(new String(new char[x]).replace("\0", "*"));
numToPattern(x-1);
System.out.println();
System.out.print(new String(new char[x]).replace("\0", "*"));
}
}
}产出:
****
***
**
*
*
**
***
****我尝试过的第二个代码是:
public class main{
public static void main(String[] args){
numToPattern2(4,1);
}
public static void numToPattern2(int x, int i){ //two input parameter
if (x<=0)
return;
else{
System.out.print(new String(new char[i]).replace("\0", "*"));
System.out.println();
numToPattern2(x-1,i+1);
System.out.print(new String(new char[i]).replace("\0", "*"));
System.out.println();
}
}
}产出:
*
**
***
****
****
***
**
*第二个代码可以工作,但它的参数中有两个输入。知道如何只使用一个输入参数并获得结果吗?
发布于 2021-06-25 02:26:33
您可以使用方法重载:
public class main{
// One input parameter
public static void numToPattern2(int x) {
// Redirect to private method
numToPattern2(x, 1);
}
private static void numToPattern2(int x, int i) {
if (x<=0)
return;
else {
System.out.print(new String(new char[i]).replace("\0", "*"));
System.out.println();
numToPattern2(x-1,i+1);
System.out.print(new String(new char[i]).replace("\0", "*"));
System.out.println();
}
}
public static void main(String[] args){
// You can now call it with only one parameter
numToPattern2(4);
}
}https://stackoverflow.com/questions/68124629
复制相似问题