在线编译器 C

#include <stdio.h> unsigned int to_binary(int n){ if(n<2){ return n; } 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` 的递归逻辑不正确,导致它只返回了最低位,而没有正确组合所有位。

- 在 `to_binary` 函数中,`return n%2;` 会立即结束函数,后面的递归调用 `to_binary(n/2+n%2);` 永远不会执行。你需要重新考虑如何将递归结果与当前位组合起来。
- 递归调用的参数 `n/2+n%2` 也不正确。将十进制数转换为二进制时,通常是将 `n` 除以 2 并递归处理商,而不是商加余数。