Java 程序:使用递归打印整数的二进制表示

原文:https://www.studytonight.com/java-programs/java-program-to-print-binary-equivalent-of-an-integer-using-recursion

在本教程中,我们将学习如何使用递归打印整数的二进制表示。递归函数是调用自身的函数。但是在进一步讨论之前,如果您不熟悉 java 中 if 语句的概念,那么一定要查看主题为 Java 中条件语句的文章。

输入:输入数字:7

输出:等效二进制数为 111

程序 1:使用递归打印整数的二进制表示

在这个程序中,我们将看到如何使用递归打印整数的二进制表示。

算法:

  1. 开始
  2. 创建 Scanner 类的实例。
  3. 声明一个变量来存储数字。
  4. 要求用户初始化数字。
  5. 把这个数除以 2。
  6. 当数除以 2 时,存储余数。
  7. 重复以上两个步骤,直到数字大于零。
  8. 以相反的顺序打印数字。
  9. 停下来。

让我们看看下面的例子,以更好地理解上述算法。

//Java Program to convert an integer to binary
import java.util.Scanner;
public class Main
{
    public static void main(String[] args) 
    {
        int n;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the number:");
        n = sc.nextInt();
        Main obj = new Main();
        int m = obj.binary(n);
        System.out.println("The binary equivalent is:"+m);
    }
   public static int binary(int n)
    {
        if (n == 1) 
        {
            return 1;
        }
        return binary(n / 2) * 10 + n % 2;
    }
}

输入数字:9 二进制等值为:1001

程序 2:使用递归打印整数的二进制表示

在这个程序中,我们将看到如何使用递归打印整数的二进制表示。

算法:

  1. 开始
  2. 创建 Scanner 类的实例。
  3. 声明一个变量来存储数字。
  4. 要求用户初始化数字。
  5. 声明一个静态方法,该方法采用一个整数参数作为参数并返回一个字符串。
  6. 使用 StringBuilder 类将结果相互追加,并使用 toString()方法将输出生成器对象转换为字符串。
  7. 将特定数字除以 2,并将余数存储在变量中。
  8. 存储数字除以 2 后的整数值。
  9. 再次调用该函数,并用余数追加其结果
  10. 满足基本条件(number == 0)后,它从方法返回 StringBuilder 对象。
  11. 打印结果。
  12. 停下来。

让我们看看下面的例子,以更好地理解上述算法。

//Java Program to convert an integer to binary
import java.util.Scanner;
public class Main
{
    public static void main(String[] args) 
    {
        int n;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the number:");
        n = sc.nextInt();
        Main obj = new Main();
        String m = obj.BRec(n);
        System.out.println("The binary equivalent is:"+m);
    }
    public static String BRec(int num)
    {
        StringBuilder sB = new StringBuilder();  
        if(num > 0)
        {
            //get the remainder of the number when divided with 2
            int rem = num % 2;
            //get the whole number after the division
            num /=  2;
            sB.append(BRec(num)).append("").append(String.valueOf(rem));
            return sB.toString();
        }
        else 
        {
           return sB.toString();
        }
     }

}

输入数字:9 二进制等值为:1001