变量在递归方法结束时保持设置为1

时间:2016-04-20 14:52:57

标签: java class recursion

编辑:搞定了。仍然不确定这个奇怪的问题是什么,但我认为这与我有一个循环和递归的事实有关。

2 个答案:

答案 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

}