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

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

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值