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
更大的值称为可有人请解释一下吗?Java的递归返回一个字符串
我调试并注意到,抛出异常后,它再次递归,所有的星号被砍成“”。我已经尝试了很多次。它还要求你应该抛出IllegalArgumentException
如果n < 0
。
为什么这个问题被低估?这可能会更好,但是,这是一个仍然学习用Java编码的人的合法问题。 – pcalcao
不要对预期条件使用异常;异常意味着用于特殊的发生,而不是递归完成的信号。 –
这个例外甚至意味着什么?你把它扔在一个“试块”中,因此它会立即被捕获。 – Thomas