堆栈溢出,用于java中元素的递归计数

Ant*_*ite 5 java recursion count

我正在尝试计算整数的二进制表示中的一个数.我需要递归地做这件事.我认为我的逻辑是正确的,但我继续得到堆栈溢出.我在第2天排除故障.这是我的代码:

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

我的逻辑是基于这样的信息:"从十进制转换为二进制的标准机制是重复地将十进制数除以2,并且在每个除法时输出余数(0或1)."

izo*_*ica 11

删除if中的等号.0除以2仍然为零 - 你进入无限递归.

我的意思是制作这个:

if (n >= 0)

严格比较即:

if (n > 0)