C语言 递归 写一个10进制转2进制的代码
时间: 2023-09-04 20:12:04 浏览: 239
以下是使用递归实现10进制转2进制的C语言代码:
```c
#include <stdio.h>
void decimalToBinary(int decimal) {
if (decimal == 0) {
return;
}
decimalToBinary(decimal / 2);
printf("%d", decimal % 2);
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Binary number is: ");
decimalToBinary(decimal);
return 0;
}
```
这段代码中,我们定义了一个递归函数`decimalToBinary`,它的作用是将一个十进制数转换为二进制数。这个函数接受一个整数参数`decimal`,如果`decimal`为0,则直接返回。否则,递归调用`decimalToBinary`函数,并将`decimal`除以2作为参数传入。最后,打印`decimal`对2取余的结果。
使用递归实现的好处是代码简单,但如果要转换的十进制数较大,递归调用的层数可能会很多,导致栈溢出。因此,使用迭代和栈的方法可能更适合处理大数。
相关问题
C语言 栈 递归 写一个10进制转2进制的代码
以下是使用栈和递归实现10进制转2进制的C语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
void push(int item) {
if (top == MAX_SIZE - 1) {
printf("Stack Overflow\n");
return;
}
stack[++top] = item;
}
int pop() {
if (top == -1) {
printf("Stack Underflow\n");
return -1;
}
return stack[top--];
}
void decimalToBinary(int decimal) {
while (decimal > 0) {
push(decimal % 2);
decimal /= 2;
}
while (top != -1) {
printf("%d", pop());
}
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Binary number is: ");
decimalToBinary(decimal);
return 0;
}
```
使用递归实现:
```c
#include <stdio.h>
void decimalToBinary(int decimal) {
if (decimal == 0) {
return;
}
decimalToBinary(decimal / 2);
printf("%d", decimal % 2);
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Binary number is: ");
decimalToBinary(decimal);
return 0;
}
```
这两种方法都可以实现10进制转2进制的功能。
C语言用栈和递归写一个10进制转2进制的代码
以下是使用栈和递归实现10进制转2进制的C语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
void push(int item) {
if (top == MAX_SIZE - 1) {
printf("Stack Overflow\n");
return;
}
stack[++top] = item;
}
int pop() {
if (top == -1) {
printf("Stack Underflow\n");
return -1;
}
return stack[top--];
}
void decimalToBinary(int decimal) {
while (decimal > 0) {
push(decimal % 2);
decimal /= 2;
}
while (top != -1) {
printf("%d", pop());
}
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Binary number is: ");
decimalToBinary(decimal);
return 0;
}
```
使用递归实现:
```c
#include <stdio.h>
void decimalToBinary(int decimal) {
if (decimal == 0) {
return;
}
decimalToBinary(decimal / 2);
printf("%d", decimal % 2);
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Binary number is: ");
decimalToBinary(decimal);
return 0;
}
```
两种方法的输出结果是相同的。
阅读全文