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

大憨熊 提交于 2020-01-25 00:32:39
#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语句的反而是递归最深层,也就是二进制第一位!!!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!