这段代码定义了一个递归函数 `count_binary_ones`,用于计算整数 `n` 的二进制表示中 `1` 的个数。函数通过检查最低位是否为 `1`(`n % 2 == 1`),然后递归处理 `n / 2`(相当于右移一位)来累加计数。`main` 函数测试了 `5`(二进制 `101`),期望输出 `2`。
- 注意 `else` 分支缺少花括号 `{}`,虽然当前代码能正确执行,但建议养成始终使用花括号的习惯,避免未来添加语句时出错。
- 思考一下:当 `n` 为负数时,`n % 2` 和 `n / 2` 的行为可能不符合预期,因为 C 语言中负数的取模和除法是向零取整的。你可以考虑如何让函数正确处理负数。