我正在尝试计算整数的二进制表示形式中 One 的数量。我需要递归地做这个。我认为我的逻辑是正确的,但我继续得到堆栈溢出。我在第 2 天进行故障排除。这是我的代码:
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 中的 equals。 0 除以 2 仍然为零 - 您将进入无限递归。
我的意思是做这个:
如果(n >= 0)
严格比较即:
if (n > 0)
关于java - java中元素递归计数的堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14288505/