Java递归十进制到二进制函数向后打印

Java Recursive Decimal to Binary Function Printing Backwards

我正在为我的 类 之一编写实验室练习。问题问 "Write a recursive function convert a decimal number into a binary number, printing the binary number" 使用构造函数 public static void decToBin(int num){}

当前代码:

public class convert {
    public static void decToBin(int num) {
        if (num > 0) {
            decToBin(num /= 2);
            System.out.print(num % 2);
        }
    }

    public static void main(String[] args) {
        decToBin(50);
    }
}

输出: 011001

不幸的是,当程序解压缩所有调用的方法并结束它们时,它会以二进制但倒退的方式打印出我的号码。 我已经尝试了几乎所有在阳光下的事情,但对我来说没有任何效果。

如果有人能告诉我问题出在哪里,请给我提示或其他任何东西。 我只需要对此代码的第二意见。 谢谢!

你在打印出你的答案之前除以 2,这会弄乱结果。更正后的函数是。

public static void decToBin(int num) {
    if (num > 0) {
        decToBin(num / 2);
        System.out.print(num % 2);
    }
}

然后要颠倒顺序,你可以翻转行。

public static void decToBin(int num) {
    if (num > 0) {
        System.out.print(num % 2);
        decToBin(num / 2);
    }
}

首先,在num /= 2上调用函数之前需要打印num % 2。并且您需要 反转 输出以获得二进制数,因为在转换为二进制数时,您从右到左键入数字。