【发布时间】:2025-12-29 04:10:06
【问题描述】:
我正在尝试编写一个递归方法,如果显示为二进制数的 n 的位数是偶数,则返回 true,如果它是奇数,则返回 false。 如果递归方法返回布尔值,我真的不明白如何计算递归方法。
我认为部分解决方案是,检查数字是否是 2 的幂:
static boolean isPowers2(long n) {
if (n % 2 != 0) return false;
if (n / 2 == 1) return true;
return isPowers2(n / 2);
}
如果指数是奇数,那么位数是偶数,如果是偶数,那么位数是不均匀的。但是我不能用我的布尔函数传递一个值,对吧?
应该返回的一些示例:
// evenCount(0B0 ) is false
// evenCount(0B1 ) is false
// evenCount(0B10 ) is true
// evenCount(0B11 ) is true
// evenCount(0B100 ) is false
// evenCount(0B111 ) is false
// evenCount(0B1000 ) is true
// evenCount(0B1010 ) is true
// evenCount(0B10000) is false
// evenCount(0B10110) istfalse
这是我在大学的算法测试中失败的一个问题,我仍然不知道如何解决它。我希望有人能给我一个关于如何解决这个问题的提示......
【问题讨论】:
-
为什么你认为 0 的位数是奇数?
-
@Nelfeal:你会如何显示 0?我会显示一个数字,一个“0”。一位是奇数。
标签: java algorithm recursion boolean digits