我的代码应该在用3调用时打印下面的输出,但是每次运行它时它只打印2行null。
---
*--
**-
***
每当我尝试更改某些内容时,它会在运行时出现堆栈溢出错误。我知道如何修复此输出但不是递归。我们不允许使用任何循环,因此这是我遇到问题的地方。任何帮助将不胜感激。
public void printPattern(int n) {
if(n>0){
System.out.println(printPatternStripes(n));
printPatternStripes(n-1);
System.out.println(printPatternStars(n));
printPatternStars(n+1);
}
}
private String printPatternStars(int stars){
if(stars==0){
return printPatternStars(stars+1) + "*";
}
else{
return null;
}}
private String printPatternStripes(int stripes){
if(stripes!=0){
return printPatternStripes(stripes-1)+ "_";
}
else{
return null;
}}
答案 0 :(得分:1)
因为你被允许使用辅助方法,所以这样的东西可以工作:
public void printPattern(int n) {
printHelper(n, n);
}
public void printHelper(int n, int initialSize) {
if(n > 0) {
printHelper(n - 1, initialSize);
}
System.out.print(stringHelper("*", n));
System.out.println(stringHelper("-", initialSize - n));
}
public String stringHelper(String string, int length) {
if (length == 0) {
return "";
}
if (string.length() == length) {
return string;
}
return stringHelper(string + string.charAt(0), length);
}
用法:
printPattern(3);
>> ---
*--
**-
***
答案 1 :(得分:-1)
一个问题是,除了return null;
之外,您应该在其他两个声明中return "";
。