c语言用递归法求进制转换
时间: 2024-09-19 14:09:37 浏览: 42
在C语言中,递归法可以用于将十进制数转换成其他进制(如二进制、八进制或十六进制)。递归的主要思路是将大数值分解为较小的部分,直到每个部分变成单一的位值。下面是一个简单的示例,展示如何将十进制转换为二进制:
```c
#include <stdio.h>
// 递归函数,将十进制转二进制
void dec_to_bin(int num, int base) {
if (num == 0) { // 基础情况:当num变为0时,返回空字符串表示结束
printf("");
} else {
// 计算当前位的值,并添加到结果前
printf("%d", num % base);
// 递归处理剩余位
dec_to_bin(num / base, base);
}
}
int main() {
int decimal = 42; // 需要转换的十进制数
char bin[64]; // 存储二进制结果的数组
// 调用函数并获取结果
sprintf(bin, "%d", decimal); // 先用sprintf保存原始十进制结果
dec_to_bin(stoi(bin), 2); // 转换为二进制并输出
printf("\n%d in binary is %s\n", decimal, bin);
return 0;
}
```
在这个例子中,`dec_to_bin` 函数会一直调用自身,每次减少输入数字 `num` 的大小,直到其变为0,然后逐次输出对应的二进制位。
阅读全文