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

#include <stdio.h> unsigned int to_binary(int n) { // if ( n < 2) { return n; } // return n%2 + (to_binary(n/2)*10); } int main() { to_binary(5); return 0; }
这段代码定义了一个递归函数 `to_binary`,试图将十进制整数转换为二进制表示,但返回的是看起来像二进制的十进制数(例如5变成101)。主函数调用了它但没有输出结果。

- 你的递归思路是正确的:每次取余数(n%2)作为当前最低位,然后递归处理 n/2。但注意,你乘10来拼接数字,这实际上是在构造一个十进制数,而不是真正的二进制位。例如,对于5,递归返回的是数字101(一百零一),而不是二进制值。如果后续需要做位运算或存储二进制位,这种表示方式会带来问题。

- 主函数中你调用了 `to_binary(5)` 但没有打印结果,所以程序运行后看不到任何输出。你需要用 `printf` 或其他方式将返回值显示出来。