public String starString(int n){
int m = (int)Math.pow(2,n);
String str="";
str = starString(m-1,str);
return str;
}
private String starString(int n, String str){
String temp ="";
if (n<0) {
try{
throw new IllegalArgumentException();
}
catch(IllegalArgumentException ex){
}
}
else {
temp+=("*");
starString(n-1,str);
}
return temp;
}
有人可以向我解释为什么这个代码返回一个星号,即使它被一个大于的值调用n >= 0
?
我调试并注意到在抛出异常后它再次递归并且所有星号都被切成“”。我已经试过很多次了。它还要求你应该抛出IllegalArgumentException
if n < 0
。