假设num>=0,基数在2到10之间;convert(13,2)返回“1101”这是我的代码到目前为止,我得到stackoverflow错误
public String convert(int num, int base) { if (num < 0 || base < 2 && base >10) { return""; } return convert(num / base, base) + (num % base); }
ukxgm1gy1#
类似于@saka1029所说的 num < 0 需要 num <= 0 以及 return ""; 需要注意的时候 num=0 ,你有 && base > 10 而不是 || base > 10 . 你的意思是“如果我们的数字是负数(不可能,因为起始数字至少是0)或者基数小于2大于10(同样不可能,一个数字不能小于2大于10),那么返回一个空字符串。因为递归函数是一个无限循环,所以出现了stackoverflow错误。 num 不能小于0且 base 不能同时小于2和大于10。
num < 0
num <= 0
return "";
num=0
&& base > 10
|| base > 10
num
base
1条答案
按热度按时间ukxgm1gy1#
类似于@saka1029所说的
num < 0
需要num <= 0
以及return "";
需要注意的时候num=0
,你有&& base > 10
而不是|| base > 10
. 你的意思是“如果我们的数字是负数(不可能,因为起始数字至少是0)或者基数小于2大于10(同样不可能,一个数字不能小于2大于10),那么返回一个空字符串。因为递归函数是一个无限循环,所以出现了stackoverflow错误。
num
不能小于0且base
不能同时小于2和大于10。