Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中元素递归计数的堆栈溢出_Java_Recursion_Count - Fatal编程技术网

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

java中元素递归计数的堆栈溢出,java,recursion,count,Java,Recursion,Count,我试图计算一个整数的二进制表示中的一个数。我需要递归地这样做。我认为我的逻辑是正确的,但我继续得到堆栈溢出。我在第二天进行故障排除。这是我的密码: static int CountRecursive(int n) { int sum = 0; if (n >= 0) { if (n%2 == 1) { sum ++; } sum += CountRecursive(n/2); } return sum;

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

    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)。”

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

我的意思是做这个:

如果(n>=0)

严格比较,即:


如果(n>0)

请注意,为了处理负整数,您必须进一步调整解决方案。