编辑:搞定了。仍然不确定这个奇怪的问题是什么,但我认为这与我有一个循环和递归的事实有关。
答案 0 :(得分:1)
我不完全理解这个问题。但是你不需要同时循环和递归。这里只有递归就足够了。使用简单的if语句在完全打印数字时停止递归。
请注意,递归简化了在正确的顺序放置数字 - 使用while循环,您需要以某种方式反转它们...
public static void printInBinary (int num) {
int div = num % 2;
int rem = num / 2;
if (rem > 0) {
printInBinary(rem);
}
System.out.print(div);
}
答案 1 :(得分:0)
你的while循环是持续进行的,因为你的num--不在循环中,因此数字永远不会改变。
public static void printInBinary (int num)
{
int div = (Integer)num%2;
int rem = (Integer)num/2;
while (num >= 1)
{
System.out.print(div);
printInBinary(rem);
num--;//Moved here
}
//removed from here
}