C语言递归算法进制转换
时间: 2024-12-13 14:13:55 浏览: 6
纯C语言:递归二进制转十进制源码分享
在C语言中,递归算法可以用于将十进制数转换成其他进制(如二进制、八进制或十六进制)。递归的核心思想是把大问题分解为小问题并解决它们,直到达到基本情况,然后逐级回溯组合结果。
以下是将十进制数转换为任意进制(这里以二进制为例)的简单递归函数示例:
```c
#include <stdio.h>
#include <string.h>
// 十进制转二进制的辅助函数,base表示目标进制
char* decimalToBinary(int num, int base) {
char binary[32] = {0}; // 存放结果的数组
if (num == 0) {
binary[0] = '0';
return binary;
}
// 递归部分,将num除以base取余数,并添加对应的字符到结果字符串的前面
binary[strlen(binary)] = '0' + num % base;
return decimalToBinary(num / base, base);
}
int main() {
int decimal = 42; // 需要转换的十进制数
char* result = decimalToBinary(decimal, 2); // 转换为二进制
printf("Decimal %d in binary is: %s\n", decimal, result);
return 0;
}
```
在这个例子中,`decimalToBinary`函数会一直递归调用自身,直到num变为0,此时停止递归并将结果返回。每次递归都会更新剩余位的值,最终得到完整的二进制表示。
阅读全文