超凡天赐 发表于 2017-6-11 17:15:52

小甲鱼递归的一道课后题

本帖最后由 超凡天赐 于 2017-6-11 18:21 编辑

#include <stdio.h>

void up_and_down(int n);

void up_and_down(int n)
{
      printf("%d ", n);
      if (n > 0)
      {
                up_and_down(--n);
      }
      printf("%d ", n);
}

int main(void)
{
      int n;

      printf("请输入一个整数:");
      scanf("%d", &n);

      up_and_down(n);
      putchar('\n');

      return 0;
}
比如输入5,为什么输出是这样的,不民白
请输入一个整数:5
5 4 3 2 1 0 0 0 1 2 3 4 Program ended with exit code: 9

超凡天赐 发表于 2017-6-11 17:17:02

@人造人

人造人 发表于 2017-6-11 17:46:30

超凡天赐 发表于 2017-6-11 17:17
@人造人

代码不够哦

人造人 发表于 2017-6-11 17:47:01

超凡天赐 发表于 2017-6-11 17:53:55

我来自问自答一下,刚刚突然想明白了。因为n已经自减了,归来的时候最后打印的肯定是4。{:10_250:}

超凡天赐 发表于 2017-6-11 17:54:32

人造人 发表于 2017-6-11 17:47


谢谢,不过这一题已经民白了{:10_250:}。

超凡天赐 发表于 2017-6-11 17:57:09

本帖最后由 超凡天赐 于 2017-6-11 18:21 编辑

#include <stdio.h>

void up_and_down(int n);

void up_and_down(int n)
{
      printf("%d ", n);
      if (n > 0)
      {
                up_and_down(n--);
      }
      printf("%d ", n);
}

int main(void)
{
      int n;

      printf("请输入一个整数:");
      scanf("%d", &n);

      up_and_down(n);
      putchar('\n');

      return 0;
}
这样会陷入死循环。{:10_247:}

人造人 发表于 2017-6-11 18:20:58

超凡天赐 发表于 2017-6-11 17:54
谢谢,不过这一题已经民白了。

页: [1]
查看完整版本: 小甲鱼递归的一道课后题