用函数递归思想解决c语言求10进制转换2进制
时间: 2025-01-04 10:40:04 浏览: 9
在 C 语言中,我们可以利用递归的思想来将十进制数转换成二进制数。递归是一种通过将大问题分解成更小的相似子问题来解决问题的方法,并通过反复调用自身来最终找到解决方案的过程。以下是使用递归来实现这个功能的一个简单示例:
```c
#include <stdio.h>
#include <math.h>
// 递归函数,将十进制转二进制
void decimalToBinary(int n, int *binary) {
// 基本情况:当n为0时,结束递归,添加0到结果数组并返回
if (n == 0)
return;
// 将n除以2取余数,得到最低有效位的二进制值
binary[0] = n % 2;
// 递归调用,处理n除以2后的整数部分
decimalToBinary(n / 2, binary + 1);
}
// 打印二进制字符串
void printBinary(int binary[], int size) {
for (int i = size - 1; i >= 0; i--)
printf("%d", binary[i]);
printf("\n");
}
int main() {
int decimal = 42; // 需要转换的十进制数
int binary[size]; // 存储二进制的结果,这里假设大小已预先计算好
// 计算二进制数组所需的长度
size_t len = floor(log2(decimal)) + 1;
// 初始化二进制数组
binary = (int*)malloc(sizeof(int) * len);
// 调用函数进行转换
decimalToBinary(decimal, binary);
// 输出结果
printf("十进制 %d 的二进制表示是: ", decimal);
printBinary(binary, len);
free(binary); // 释放内存
return 0;
}
```
阅读全文