Online Compiler C

#include <stdio.h> unsigned int to_binary(int n) { // if ( n < 2) { return n; } // return n%2 + (to_binary(n/2)); } int main() { to_binary(5); return 0; }
这段代码定义了一个递归函数 `to_binary`,试图将十进制整数转换为二进制表示。但函数返回的是 `unsigned int` 类型,而二进制表示通常需要以字符串或整数形式(如 101)输出。当前递归逻辑只计算了最低位,但没有正确组合高位数字。

- 递归返回时,`n%2` 得到的是当前最低位(0或1),但 `to_binary(n/2)` 返回的是高位部分的数值。例如 `to_binary(5)` 会计算 `1 + to_binary(2)`,而 `to_binary(2)` 返回 `0 + to_binary(1)`,最终结果是 `1+0+1=2`,这并非二进制数 101。你需要考虑如何将高位数字“左移”一位(即乘以10)再与低位相加,才能得到正确的二进制整数形式。

- `main` 函数中调用了 `to_binary(5)` 但没有输出结果。你需要用 `printf` 打印返回值,才能看到函数实际计算了什么。