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

问题描述 投票:4回答:2

我正在为我的一个课程编写实验练习。问题要求“写一个递归函数将十进制数转换为二进制数,打印二进制数”使用构造函数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

不幸的是,当程序解包所有被调用的方法并结束它们时,它会以二进制形式打印出我的数字但向后打印。我在阳光下尝试了一切,对我来说没有任何作用。

如果有人能告诉我问题所在,请给我一些暗示或暗示。我只需要对此代码提出第二意见。谢谢!

java recursion binary decimal data-conversion
2个回答
3
投票

在打印出与结果混淆的答案之前,你要除以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);
    }
}

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.