递归实现十进制向二进制的转化

#include<iostream>
using namespace std;
void toBinary(unsigned long n)
{
    int i;
    i = n % 2;
    if(n >= 2)
        toBinary(n/2);
    putchar(i==0?'0':'1');
    return;
}

int main()
{
    toBinary(9);
}

有人可能会纳闷,数字是不是倒序输出了?因为第一个i其实是最后一位数,但是在if判断之后程序使用putchar输出了i。
但实际上并不是这样的,if结构使函数进入了递归中,导致最先输出执行putchar语句的反而是递归最深层,也就是二进制第一位!!!

发布了267 篇原创文章 · 获赞 38 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/dghcs18/article/details/104076404