1613551 发表于 2022-6-1 18:10:52

关于递归的问题

我没看懂第15行,'0' + 1 == '1'是什么意思?
#include <stdio.h>

void binary(unsigned long n);

void binary(unsigned long n)
{
      int r;

      r = n % 2;
      if (n >= 2)
      {
                binary(n / 2);
      }

      putchar('0' + r); // '0' + 1 == '1'
}

int main(void)
{
      unsigned long number;

      printf("请输入一个正整数:");
      scanf("%lu", &number);

      binary(number);
      putchar('\n');

      return 0;
}

wp231957 发表于 2022-6-1 18:30:24

百度ascii码,就是字面意思,字符1比字符0多个1

风车呼呼呼 发表于 2022-6-1 18:39:42

对于数字连续编码的编码系统中,int型转换为char型的一种方式。之所以转换,是因为用的是putchar(),不愿意的话,用printf以%d直接打印 r 也行

柿子饼同学 发表于 2022-6-1 18:45:05

字符 '0' 的 ASCII 编码为 48 , '1' 的编码为 49
'0' + 1, 就是先把 '0' 转成编码形式, 即 48, 再加 1 得 49
此时就是 '1'

jhq999 发表于 2022-6-1 19:05:22

上面都解答了
我写个不同的代码
void binary(unsigned long n)
{
      int r;

      r = n &1;
      if (n >= 2)
      {
                binary(n >>1);
      }

      putchar('0' + r); // '0' + 1 == '1'
}
页: [1]
查看完整版本: 关于递归的问题