用递归实现数字的二进制转换

时间:2025-03-06 08:40:01
在这里插入代码片#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位没补。
最近才开始写博客,请大佬多多指教