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
。