Онлайн компилятор C

#include <stdio.h> int count_binary_ones(int n) { if (n == 0) { return 0; } return 0 + count_binary_ones(n / 2); } int main() { printf("%d", count_binary_ones(5)); return 0; }
这段代码定义了一个函数 `count_binary_ones`,意图是计算整数 `n` 的二进制表示中1的个数。但当前实现总是返回0,因为递归中只加了0,没有判断当前最低位是否为1。

- 在递归中,你需要检查 `n` 的最低位(即 `n % 2`)是否为1,如果是,则应该在返回值中加1,而不是固定加0。
- 递归调用 `count_binary_ones(n / 2)` 是正确的,它处理去掉最低位后的剩余部分,但你需要把当前最低位的值(0或1)加到递归结果上。