2013-01-11 30 views
5

我想计算一个整数的二进制表示中的个数。我需要递归执行此操作。我认为我的逻辑是正确的,但我仍然遇到堆栈溢出。我正在进行第2天的故障排除。这是我的代码:在Java中递归计数元素的堆栈溢出

static int CountRecursive(int n) { 
    int sum = 0; 
    if (n >= 0) { 
     if (n%2 == 1) { 
      sum ++; 
     } sum += CountRecursive(n/2); 
    } return sum; 
} 

我的逻辑是基于这样的信息:“从十进制转换为二进制的标准机制是由2至多次划分十进制数,并在每个分割,输出余数(0或1)“。

+0

不过请注意,你必须调整你的解决方案更是为负整数工作了。 – biziclop

回答

11

删除if中的equals。 0除以2仍然是零 - 你进入无限递归。

我的意思是让这一个:

if (n >= 0)

严格比较即:

if (n > 0)

+0

就是这样!谢谢! – AntBite