c语言用递归法将十进制转换为二进制

程序是对的,但是不太明白原理。谁能给我读一读程序。感激不尽。
#include<stdio.h>
void DtoB(int n)
{
if(n)
{
DtoB(n/2);
printf("%d",n%2);
}
}
void main()
{
int n;
scanf("%d",&n);
DtoB(n);
}

这个是递归程序,程序的意思就是: 十进制转化为2进制,利用辗转除以2取余数的方式,这个网上有很多,其他比如十进制转十六进制也是这个方式,只不过辗转除以16,直到本身变为0,每次相除的余数最后组合成要转换的结果。PKU-一夫追问

但我理解它的意思时,输出时是正序输出啊!但结果是对的。你能帮我解释一下if语句中那两条语句的意思吗?

追答

if里面的两个语句是:输出的时候是倒序的,因为递归到最深层(n=1的时候),才开始第一次printf。这个程序调试一下就好了,很简单,比如说参数你可以设为8。打字实在很难把递归这么高大上的东西给你完全讲清楚。

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言用递归法将十进制转换为二进制
这个是递归程序,程序的意思就是: 十进制转化为2进制,利用辗转除以2取余数的方式,这个网上有很多,其他比如十进制转十六进制也是这个方式,只不过辗转除以16,直到本身变为0,每次相除的余数最后组合成要转换的结果。PKU-一夫

...用递归函数,把输入的一个十进制整数转换成二进制数输出
void f(int n){ if(n) f(n\/2);else return;printf("%d",n%2);} int main(){ int n;while(1){ scanf("%d",&n);if(n<0) break;if(n==0) printf("0");f(n);printf("\\n");} return 0;}

用递归函数将十进制转换为二进制
void d2n(unsigned long d,int n){ if(d>=n){ d2n(d\/n,n);} printf("%c","0123456789ABCDEF"[d%n]);} int main(){ unsigned long d;int n;scanf("%lu",&d);d2n(d,2);return 0;}

编写一个递归函数实现十进制到二进制转换
#include<stdio.h>用递归法将一个整数转换成字符串。例如,输入483,应输出字符串“483”这两个递归函数狠类似void convert(int n){ int i; if ((i=n\/10)!=0)convert(i);putchar(n%10+'0');}main(){int number;printf("\\nInput an integer:");scanf("%d",&number);printf("Output:");if (nu...

十进制转化成二进制C语言
这是递归调用 int a(){ a();} 这里用递归是因为不知道循环的次数,只知道循环结束条件。其实这与goto语句一样,最好别用。

二进制与十进制相互转换用递归思想完成的代码
用递归实现二进制数转换为十进制数 include <stdio.h> int twototen(int num);main(){ int num;printf("请输入二进制数:");scanf("%d",&num);printf("对应的十进制数是:%d\\n",twototen(num));return(0);} int twototen(int num){ if(num\/10==0)return 1;else return twototen(...

用递归算法将一个十进制正整数转化为相应的二进制数
using namespace std;int bit[65], Prime[1000], Index, temp;int* ToBinary(int n) { if(n == 0)return bit;bit[Index++] = n%2;ToBinary(n\/2);return bit;} int PalindromicNumber(int n) { if(n == 0)return temp;temp = temp*10 + n%10;PalindromicNumber(n\/10);return ...

十进制转化成二进制的代码 求帮助!!!
void main(){ int x,y,z,i;scanf("%d",&x);i=0,z=0;do { y=x%2;x=x\/2;z=pow(10,i++)*y+z;} while(x!=0);printf("%d\\n",z);} 你的代码不能处理大的整数,给你个代码参考下,可处理较大整数,是用递归的。include<stdio.h> void ttor(int n);void main(){ int ...

写一个函数,输入一个十进制数,输出相应的二进制数(用递归法)_百度...
include<stdio.h> void dec2bin(int x){if(x>1)dec2bin(x\/2);printf("%d",x%2);} int main(){int x;scanf("%d",&x);dec2bin(x);return 0;}

十进制转二进制的递归算法
将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...

相似回答