递归地计算 N 的二进制表示形式中 1 的数量。在JAVA中

发布于 2024-09-18 12:11:28 字数 146 浏览 4 评论 0原文

我理解这样的概念:如果 N 中 1 的数量是偶数,则与 N/2 相同;如果数量是奇数,则与 N/2 + 1 相同,但我不明白如何递归地执行此操作。

另外,假设我在机器中输入 10101,然后执行 N/2,它会执行 505,而不是二进制除法。每次都需要来回转换吗?

I understand the concept that the number of 1's in N is the same as N/2 if it's even, and N/2 + 1 if the number is odd, but I don't understand how to do it recursively.

Also, say I input 10101 into my machine, and I do N/2, it does 505 instead of the binary division. Do I have to convert back and forth each time?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

罗罗贝儿 2024-09-25 12:11:29

这是一个非家庭作业的方法来回答这个问题: Integer.bitCount

:-P

Here's a non-homework way to answer this: Integer.bitCount

:-P

淤浪 2024-09-25 12:11:29

仔细阅读问题:如果 N 是偶数,则 N 中 1 的数量与 N/2 中 1 的数量相同;如果 N 是奇数,则与 (N/2 中 1 的数量) + 1 相同。

如何仅通过查看位串来判断 N 是偶数还是奇数? (提示:想想每列代表什么:64、32、16……)

想想 N/2 在位运算方面意味着什么:在纸上计算一些,例如 8/2、7/2、5 /2 并寻找模式。

Read the question carefully: The number of 1's in N is the same as the number of 1's in N/2 if N is even, and the same as the (number of 1's in N/2) + 1 if N is odd.

How can you tell if N is even or odd, just by looking at the bit string? (Hint: think about what each column represents: 64's, 32's, 16's, ...)

Think about what N/2 means in terms of the bit operations: compute a few on paper, like 8/2, 7/2, 5/2 and look for a pattern.

夜吻♂芭芘 2024-09-25 12:11:29

使用递归时,识别“基本”情况非常重要:不再发生进一步递归的情况。我认为如果您正在计算位,则基本情况是值为零,即没有任何位设置需要计算。

您是正确的,如果 N 是偶数,则 N 和 N/2 中 1 的数量相同;如果 N 是奇数,则 1 的数量与 N/2 + 1 相同。有趣的“位”是“+1”。如果 N 是奇数,那么该位会在哪里?考虑 1、3、9、17、19 等您想要检查的任何奇数的位模式。你注意到一个模式了吗?

When you use recursion, it's important to identify the "base" case: the condition where no further recursion takes place. I think if you are counting bits, the base case would be where the value is zero, i.e., there are no bits set that remain to be counted.

You're correct that the number of 1s is the same in N and N/2 if N is even, and the same as N/2 + 1 if N is odd. The interesting "bit" is the "+ 1". If N is odd, where would that bit be? Think about the bit patterns for 1, 3, 9, 17, 19… any odd number you care to check. Do you notice a pattern?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文