将整数转换为二进制字符串的递归函数?

时间:2017-02-21 17:25:51

标签: java recursion binary integer

所以我知道如何编写一个函数,只需将转换器整数打印成二进制就像这样:

private void convertBinary(int num) {

    if(num > 0){

        convertToBinary(num/2);

        System.out.print(num%2 + "");

    }
}

但是,我不确定如果我想将它作为字符串返回,我会怎么做,特别是对于递归,因为如果我将字符串初始化为方法的开头,它将在每次递归期间重置字符串呼叫。

3 个答案:

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