所以我知道如何编写一个函数,只需将转换器整数打印成二进制就像这样:
private void convertBinary(int num) {
if(num > 0){
convertToBinary(num/2);
System.out.print(num%2 + "");
}
}
但是,我不确定如果我想将它作为字符串返回,我会怎么做,特别是对于递归,因为如果我将字符串初始化为方法的开头,它将在每次递归期间重置字符串呼叫。
答案 0 :(得分:0)
建议1:函数名称... ConvertToBinary vs ConvertBinary
建议2:你的结果会以这种方式回复(左边是lsb)
建议3:从转换中获取返回值并将其与n%2连接作为输出
但你已经足够近了。
BTW是出于教育目的吗?递归对于将事物转换为二进制来说是非常低效的:)答案 1 :(得分:0)
我可以复制/粘贴代码而不是给你代码,我会解决类似的问题,你可以应用相同的技术。
这是递归打印的print
版本' A' n
次:{/ p>
void printTimes(int n) {
if(n > 0) {
printTimes(n-1);
System.out.print("A");
}
}
现在这是一个返回String
:
String stringTimes(int n) {
if(n > 0) {
return stringTimes(n-1) + "A";
} else {
return "";
}
}
这可以帮助您编写toBinary
方法。
虽然这与原作很接近,但我喜欢在递归方法中保持一致,首先处理终止子句,所以更像是:
String stringTimes(int n) {
if(n == 0) {
return "";
}
return stringTimes(n - 1) + "A";
}
请注意,出于学习目的,递归仅适用于Java中的此特定问题。
答案 2 :(得分:0)
class Class {
public static void main(String... args) {
System.out.println(intToBinary(1));
System.out.println(intToBinary(8));
System.out.println(intToBinary(15));
System.out.println(intToBinary(1234567));
}
private static String intToBinary(final int i) {
if (i == 0) {
return "";
} else {
return intToBinary(i / 2) + Integer.toString(i % 2);
}
}
}