如何实现将整数转换为二进制表示的递归方法
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 是您当前的数字。
我正在编写一种方法,以递归方式将整数值转换为其二进制表示形式。
我在下面写的代码只用了一个方法就完成了任务,但我想知道如何真正写出一个完整的方法。
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 是您当前的数字。