鱼C论坛

 找回密码
 立即注册
查看: 2929|回复: 7

求解释!看不懂!

[复制链接]
发表于 2011-12-24 15:15:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这段程序输出结果
1
1
0
0
不明白他的作用到底是什么!求解释!
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-12-24 15:22:53 | 显示全部楼层
  1. #include <stdio.h>
  2. void Bin (int x)
  3. {
  4. if (x/2>0)
  5.         Bin (x/2);
  6.         printf("%d\n",x%2);

  7. }
  8. void main()
  9. {
  10. Bin(12);
  11. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-24 17:15:13 | 显示全部楼层
将10进制数转化为2进制数
10进制是12就是2进制1100
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-12-24 23:08:23 | 显示全部楼层
可以详细点吗?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-12-24 23:08:36 | 显示全部楼层
可以详细点吗?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-25 01:43:53 | 显示全部楼层
本帖最后由 jialebihaidai 于 2011-12-25 08:48 编辑

12/2  商6 余 0
6/2 商3   余  0
3/2  商1   余 1
1/2  商0   余 1

把余数从下往上看就是二进制数 1100

按照上面的思路可以写出代码:
#include<stdio.h>
void Bin(int x)
{
        printf("%d\n",x%2);
        if(x/2>0)
        {
                Bin(x/2);
        }
}

void main()
{
        Bin(12);
}
输出为0 0 1 1

而你的代码在输出第一个0以前递归直接进入下一步……最后实现了逆序输出
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-25 12:50:24 | 显示全部楼层
楼上正解:D
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-25 20:29:30 | 显示全部楼层
我算看明白了
就是个进制转会啊
得记住
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-10 10:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表