gpt4 book ai didi

c - 这个十进制到二进制转换程序是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:34 25 4
gpt4 key购买 nike

我一直在寻找一个简单的十进制到二进制转换程序,然后发现了以下使用递归的程序。

void bin(unsigned n)
{
/* step 1 */
if (n > 1)
bin(n/2);

/* step 2 */
printf("%d", n % 2);
}

int main(void)
{
bin(4);
return 0;
}

该程序的输出如预期的那样是 100。但是,我无法理解它如何显示输出 100 因为根据我的说法,输出应该是 1 (不正确)而不是 100

这是我对 bin 函数步骤的解释。

  1. 我们将把 4 作为 bin 的参数放在第一位。
  2. 4 > 1,因此,它将再次使用参数 2 调用 bin 函数。
  3. 现在,2 > 1,因此,它将再次使用参数 1 调用 bin 函数。
  4. 因为1不大于1,我们将转到步骤2,编译器将打印1(因为 1%2=1),因此,这个程序应该只打印 1 而不是 100

任何人都可以解释并指导我哪里错了吗?

最佳答案

也许图示的顺序会让你更容易理解:

  • bin(4)
    • bin(2)
      • bin(1)
        • printf("%d",1%2);//1
      • printf("%d",2%2);//0
    • printf("%d",4%2);//0

关于c - 这个十进制到二进制转换程序是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com