如果我想在BlueJ上编译它,它会在第3行的第一个“”处抛出“Unexpected Type; required:Variable; found:value”错误。
public static String binaryCode(int i){
if(i<=1){
return "" += i%2;
}
return "" += i%2 += binaryCode(i/2);
}
顺便说一下,它必须是一个递归,我知道Loop也可以工作,但它必须在递归中解决。程序应该将二进制值作为字符串从int。返回
答案 0 :(得分:3)
使用+运算符,而不是+ =
public static String binaryCode(int i) {
if (i <= 1) {
return "" + i%2;
}
return "" + i%2 + binaryCode(i/2);
}
请注意,这是非常低效的解决方案。很多String对象都被创建并且必须被销毁(字符串在Java中是不可变的)。更好的解决方案是使用循环和StringBuilder。
使用StringBuilder的解决方案(如果你想提高性能,这段代码的执行速度提高了大约4倍):
public static String binaryCode(int n) {
StringBuilder sb = new StringBuilder();
for(int i = n; i > 0; i /= 2) {
sb.append(i%2);
}
return sb.toString();
}