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)
请注意,为了处理负整数,您必须进一步调整解决方案。