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
Не используйте исключения для ожидаемых условий; исключения предназначены для использования в исключительных случаях, а не как сигнал о завершении рекурсии. –
В чем заключается это исключение? Вы бросаете его в блок «try», и поэтому его сразу поймают. – Thomas