2017-05-30 185 views
2

我正在为我的一个类编写实验练习。这个问题问到“写一个递归函数转换为十进制数转换成二进制数,打印二进制数” 使用构造“公共静态无效decToBin(INT NUM){}”Java递归十进制到二进制函数向后打印

当前代码:

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

不幸的是,当程序解压缩所有所调用的方法和他们结束它打印出我的电话号码在二进制,但倒退。 我已经尝试过太阳下的一切,没有任何东西适合我。

如果有人能告诉我问题出在哪里,给我一个暗示或任何东西。 我只是需要关于此代码的第二意见。 谢谢!

+0

不相关,但是不打印1的错误值? – CBredlow

回答

2

在将打印出来的结果打印出来之前,您将除以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

谢谢Kevin,事实证明'/ ='是问题所在,它只需要改成'/' – BigChemist

0

首先,你需要调用num /= 2功能之前打印num % 2。你需要反向输出得到二进制数,因为当转换为二进制时,你从右到左键入数字。