C语言写个程序利用递归法将十进制转化为二进制
时间: 2023-09-02 14:14:21 浏览: 126
好的,以下是C语言递归方法将十进制转换为二进制的程序:
```c
#include <stdio.h>
void decimalToBinary(int decimalNumber)
{
int remainder;
if (decimalNumber <= 1)
{
printf("%d", decimalNumber);
return;
}
remainder = decimalNumber % 2;
decimalToBinary(decimalNumber >> 1);
printf("%d", remainder);
}
int main()
{
int decimalNumber;
printf("请输入一个十进制数: ");
scanf("%d", &decimalNumber);
printf("二进制数为:");
decimalToBinary(decimalNumber);
return 0;
}
```
在这个程序中,函数`decimalToBinary`是一个递归函数,它将十进制数转化为二进制数。这个函数首先判断输入的十进制数是否小于等于1,在这种情况下直接输出该数字即可。如果数字大于1,则用其与2的余数和其除以2的结果递归调用自身。最后,输出结果即可。
请注意,递归可能会导致栈溢出,因此请确保递归次数不会太多。
相关问题
c语言递归法求进制转换
在C语言中,递归法可以用于将十进制数转换为其他进制数,比如常见的二进制、八进制或十六进制。递归的基本思想是将大问题分解成更小的子问题,直到问题简化到可以直接求解的基础情况。
下面是一个简单的例子,展示如何使用递归将一个十进制数转换为二进制:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
void decToBinary(int n, char binary[50]);
int main() {
int decimal = 42;
char binary[50];
// 调用函数并打印结果
decToBinary(decimal, binary);
printf("十进制 %d 转换成二进制是 %s\n", decimal, binary);
return 0;
}
// 递归函数 decToBinary
void decToBinary(int n, char binary[50]) {
if (n == 0) { // 当数字变为0,结束递归
binary[0] = '\0'; // 终止字符串
return;
}
binary[strlen(binary)] = '0' + n % 2; // 将当前位添加到结果
decToBinary(n / 2, binary); // 递归处理下一位
}
```
在这个例子中,`decToBinary`函数会一直调用自身,每次减半输入的十进制数,并记录每一位的二进制值。当十进制数变为0时,递归停止,最终得到的`binary`数组就是转换后的二进制表示。
c语言用递归法求进制转换
在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,然后逐次输出对应的二进制位。
阅读全文