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);
    }
  }
}