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

标签 java recursion count

我正在尝试计算整数的二进制表示形式中 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/

相关文章:

java - 正确使用log4j和异常

java - 更改 libgdx 中的图像

javascript - 将 for 循环转换为递归函数

C++ 算法简单的递归回文检查器

java - 递归方法检查一行整数是否为降序 : return true/false

MySQL 查询连接和计数查询

java - Vaadin View 中的 Autowiring 服务和组件不工作

java - 如何取消注册 OSGi 服务

postgresql - 通过 SQL 计算序列中的字符

count - 在 L. LISP 的任何地方发现符号 A 的出现