【C语言函数递归】用二进制表示十进制数

函数递归在处理倒序问题时比循环更加方便。在二进制中,奇数的末尾一定为1,偶数的末尾一定为0,通过5%2即可确定5的二进制位数的最后一位是1还是0.由此,计算机中的第一位十进制数实际上是带输出的二进制数的最后一位,由此我们说这是典型的倒序问题。那么,如何获得倒数第二位二进数数了?将原数除以2,这种方式相当于在十进制下除以10将小数点左移一位。上述方法可类比与十进制中:628%10得8,8为该书的最后一位;628/2得62,而62%2得2,所以为该数的下一位。

递归思路:1. 键盘读取计算机上的十进制数,将其除以2取余,余数保存在r中;

2. if设置退出递归条件要求n大于等于2,再次进入函数;

3. r与0比较,等于0输出0,等于1输出1;

#include<stdio.h>
void to_binary(unsigned long n);
int main(void)
{
	unsigned long number;

	printf("Enter an integer (q to quit):\n");
	while (scanf("%d", &number) == 1)
	{
		printf("Binary equivalent:");
		to_binary(number);
		putchar('\n');
		printf("Enter an integer (q to quit):\n");
	}
	printf("Done.\n");

	return 0;
}

void to_binary(unsigned long n)
{
	int r;

	r = n % 2;
	if (n >= 2)
		to_binary(n / 2);
	putchar(r == 0 ? '0' : '1');
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值