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

#include <stdio.h> unsigned int to_binary(int n){ if(n<2){ return n; }else return n%2; to_binary(n/2+n%2); } int main() { int x,all; scanf("%d",&x); all=to_binary(x); printf("%d",all); return 0; }
这段代码试图将一个整数转换为二进制表示,但实现有误。函数 `to_binary` 的递归逻辑不正确,导致它只返回了最低位,而没有正确拼接后续的二进制位。

- 在 `else` 分支中,你直接返回了 `n%2`,这只会得到最低位,而忽略了递归调用 `to_binary(n/2)` 的结果。你需要将递归调用的结果与当前位组合起来,才能得到完整的二进制数。
- 递归调用 `to_binary(n/2+n%2)` 这一行写错了,应该是 `to_binary(n/2)`,因为除以2才能去掉最低位。另外,这一行虽然写了,但永远不会执行,因为前面的 `return` 已经结束了函数。