void to_binary(unsigned long n)
{
int r;
r = n % 2;
if (n >= 2) {
to_binary(n / 2);
}
putchar(r == 0 ? '0' : '1');
return;
}
结果:
Enter an integer(q to quit):
5
Binary equivalent: 101
Enter an integer(q to quit):
分析:
在二进制中,奇数的末尾一定是1,偶数的末尾一定是0。对于数字n,其二进制最后一位是n % 2。因此计算的第一位数字实际上是待输出二进制的最后一位,所以在递归函数的递归调用之前计算n % 2,在递归调用之后打印结果,这样,计算的第1个值正好是最后一个打印的值。
要获得下一位数字, 必须使用原数除以2,如果计算结果是偶数,那么二进制的下一位数就是0,如果是奇数,就是1.。
来自《c primer plus》