在这里插入代码片#include <stdio.h>
void fun(int num);
int main(void)
{
int num;
scanf("%d",&num);
fun(num);
}
void fun(int num) //定义的无返回型的函数,故该函数不用return
{
int b;
if(num<2)//若数字除到小于2是,其本身就是一位二进制的数
{
printf("%d",num);
}
else//若该数不小于2,取余得到该位的二进制数,再除2进行递归
{
b=num%2;
num=num/2;
fun(num);//注意递归的输出为逆序输出二进制的数,详细,请看下面的举例
printf("%d",b);
}
}
例
输入num=6这个数字,其二进制为0110
第一步:判断大于二,对6进行取余得到0,然后num=num/2,传入num=3进行递归;
第二步:判断num>2,num=num%2,得到1,然后num=num/2,传入num=1;进行递归;
第三步:判断num<2,则其本身就为一位二进制数,直接打印输出
之后接着返回之前的函数,完场printf打印输出之前得到的二进制数。
就是每次到递归调用的时候,该函数内的递归后面的部分先停止执行,等知道终止条件时,再依次从后往前执行之前函数未完成的部分。
哦,对了,我这个代码只实现了数字的二进制转化的有效部分,前面的0位没补。
最近才开始写博客,请大佬多多指教