我正在尝试回答这个问题,但我似乎无法让它回来正确。我知道这很容易,但我似乎无法得到这个。这是在java中。
编写一个接受整数参数n的递归方法starString
并返回一个长度为2n的String对象(即第2个幂,包含2个星号)(星号)。
例如:请忽略这是用于格式化的破折号。我只需要发回""
调用---------------------输出--------------------原因
starString(0);
------*
--------------------2power0 = 1
starString(1);
------**
--------------------2power1= 2
starString(2);
------****
--------------------2power2= 4
您可以假设n>0
。请注意,您的方法体不能使用迭代
这就是我所拥有的:
private static String star(int n){
if (n==0){
String b ="*";
return b;
}
else {
String b ="**";
n-=1;
star(n);
return b;
}
}
答案 0 :(得分:3)
试试这个:
private static String startStar(int n) {
if (n==0) {
return "*";
} else {
return startStar(n-1)+startStar(n-1);
}
}
答案 1 :(得分:2)
对于任何n > 0
,您始终会返回"**"
,并忽略star(n)
来电的结果,这是错误的。
正确的版本是:
private static String star(int n) {
if (n==0) {
String b ="*";
return b;
} else {
String t = star(n-1);
return t + t;
}
}
答案 2 :(得分:0)
private static String starString(int n) throws IllegalArgumentException {
if (n == 0) {
return "*";
} else if (n < 0) {
try {
throw new IllegalArgumentException("You can't pass a value less than 0");
} catch (IllegalArgumentException e) {
System.out.println("Caught an IllegalArgumentException: " + e.getMessage());
return "";
}
} else {
return starString(n - 1) + starString(n - 1);
}
}