十进制转二进制的递归算法

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:09:13
问题:编写函数,用递归法将任意十进制整数转换成二进制数。思路:将十进制数不断除以2的余数记录下来,直到商数为零。然后逆序输出这些余数。例如:十进制数6除以2的余数先后是0 1 1 ,则对应二进制数就是110。

我写的代码只能实现011,而不能输出110。请问用递归法应该怎么写?

#include <stdio.h>

void getdata(int *px)
{printf("Enter:");
scanf("%d",px);
putchar('\n');
}

void ext(int x)
{int i;
i=x;

if(i/2>0)
{printf("%d",i%2);
ext(i/2);
}

else printf("%d",i);

}

void main()
{int x;
getdata(&x);
ext(x);
printf("\n");
}

将ext函数写为
void ext(int x)
{
int i;
i=x;

if(i/2>0)
{
ext(i/2); //这一句提前。
printf("%d",i%2);
}

else printf("%d",i);

}

另外,该函数中最好不用再定义一个变量i,写成如下的形式:
void ext(int x)
{
if(x/2>0)
{
ext(x/2);
printf("%d",x%2);
}
else printf("%d",x);
}

递归:
-------------------
void DecimalToBinary(int num)
{
if(num ==0)
{
return;
}
else
{
DecimalToBinary(num/2);
printf("%d",num%2);
}
}
void main()
{
int number;
scanf("%d",&number);
DecimalToBinary(number);
getch();
}
----------------------
该程序可转换大于0的整数。
在TC上运行过了,可以运行结果.
输入:10
输出:1010

<