我正在为我的一个课程编写实验练习。问题要求“写一个递归函数将十进制数转换为二进制数,打印二进制数”
使用构造函数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
不幸的是,当程序解包所有被调用的方法并结束它们时,它会以二进制形式打印出我的数字,但是向后打印。 我在阳光下尝试了一切,对我来说没有任何作用。
如果有人能告诉我问题所在,请给我一些暗示或暗示。 我只需要对此代码提出第二意见。 谢谢!
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
首先,您需要在group :development, :test do
gem 'sqlite3', '1.3.12'
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', '9.0.0', platform: :mri
end
上调用函数之前打印num % 2
。并且你需要反转输出才能获得二进制数,因为在转换为二进制时你可以从右到左输入数字。