Online Compiler C

#include <stdio.h> unsigned int to_binary(int n){ if(n==0){ return 0; } return (n%2)+10*to_binary(n/2); }
这段代码定义了一个递归函数 `to_binary`,它试图将一个整数转换为二进制表示,但返回的是 `unsigned int` 类型。例如,输入 5 会返回 101(即一百零一),而不是真正的二进制位。

- 函数对负数没有处理,如果输入负数,递归会一直进行,因为 `n/2` 在负数时不会收敛到 0,可能导致无限递归或错误结果。
- 递归逻辑本身是正确的,但返回值类型是整数,当数字较大时,二进制表示会超过 `unsigned int` 的存储范围,导致溢出。例如,输入 1024 会得到错误结果。