我正在尝试递归地计算整数的二进制表示中的1的数量。我认为我的逻辑是正确的,但我仍然遇到了堆栈溢出的问题。我已经花费了两天时间进行故障排除。以下是我的代码:
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)"。