Java 将整数转换为二进制字符串的递归函数?
因此,我知道如何编写一个函数,将转换器整数打印成二进制,如下所示:Java 将整数转换为二进制字符串的递归函数?,java,recursion,binary,integer,Java,Recursion,Binary,Integer,因此,我知道如何编写一个函数,将转换器整数打印成二进制,如下所示: private void convertBinary(int num) { if(num > 0){ convertToBinary(num/2); System.out.print(num%2 + ""); } } 但是,如果我想将它作为字符串返回,我不确定该怎么做,尤其是在递归中,因为如果我将字符串初始化为方法的开头,它将在每次递归调用期间重置字符串 建议1:函
private void convertBinary(int num) {
if(num > 0){
convertToBinary(num/2);
System.out.print(num%2 + "");
}
}
但是,如果我想将它作为字符串返回,我不确定该怎么做,尤其是在递归中,因为如果我将字符串初始化为方法的开头,它将在每次递归调用期间重置字符串 建议1:函数名。。。ConvertToBinary与ConvertBinary的对比
建议2:您的结果将以这种方式还原(lsb位于左侧)
建议3:从转换中获取返回值,并将其与n%2连接作为输出
但你已经够近了
顺便问一下,这是为了教育目的吗?递归对于将某些内容转换为二进制文件来说效率很低:)我将解决一个类似的问题,您可以应用相同的技术,而不是提供可以复制/粘贴的代码 以下是递归打印“A”
n次的print
版本:
void printTimes(int n) {
if(n > 0) {
printTimes(n-1);
System.out.print("A");
}
}
下面是一个返回字符串的版本:
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中,出于学习的目的。首先将方法更改为返回String
,然后在递归调用时捕获返回值。现在您已经从递归调用中获得了值,您可以将其追加,而不是打印。看看这会把你引向何方,一步一步。可能的重复不是重复(至少不是重复)——这是一个“帮助我学习递归”的问题。
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);
}
}
}