如何实现将整数转换为二进制表示的递归方法

How to implement a recursive method for converting an integer to binary representation

我正在编写一种方法,以递归方式将整数值转换为其二进制表示形式。

我在下面写的代码只用了一个方法就完成了任务,但我想知道如何真正写出一个完整的方法。

import java.util.Scanner;

public class Exercise18_21 {

    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a decimal integer: ");
        int decimal    = input.nextInt();
        System.out.print("Enter a character: ");

        System.out.printf("%d decimal is binary %s",decimal,dec2Bin(decimal));
    }

    //input: integer
    //output: binary representation of integer as a string
    public static String dec2Bin(int decimal){
        return Integer.toBinaryString(decimal);
    }

}

我的问题是如何用递归来完成这个?

我想尽可能多地保留您的代码。因此我只是添加了一个新方法 successiveDivision(int)

import java.util.Scanner;

public class Exercise18_21 {

    public static void main(String args[]) {

        Scanner input = new Scanner(System.in);
        System.out.print("Enter a decimal integer: ");
        int decimal = input.nextInt();
        System.out.print("Enter a character: ");

        System.out.printf("%d decimal is binary %s", decimal, dec2Bin(decimal));

    }

    // input: integer
    // output: binary representation of integer as a string
    public static String dec2Bin(int decimal) {
        return successiveDivision(decimal);
    }

    public static String successiveDivision(int dec) {
        if (dec <= 0) {
            return "";
        } else {
            int bit = dec % 2;
            return successiveDivision(dec / 2) + bit;
        }
    }

}

您可以像使用笔和纸一样实施它。使用 modulo 操作。 除以 2 是递归调用的参数,mod 2 是您当前的数字。