递归:先递下去,再归回来

👁️ 22 人浏览 💬 0 人评论 ❤️ 添加收藏

函数在自己的函数体里调用自己,叫递归。它必须有一个结束条件,不然会一直调用下去,直到程序崩溃:

  • if (n == 0) return;:结束条件,n 减到 0 就不再往下调用;
  • count(n - 1);:自己调用自己,但问题规模变小了一点。

count(3) 会调用 count(2),count(2) 再调用 count(1)……这一路叫「递」;count(0) 返回后,再一层层回到 count(1)、count(2)、count(3),叫「归」。

现在程序输出 3 2 1(每个一行)。先运行看画布上各层进入的顺序;然后只挪一行,让输出变成:

1
2
3

代码里以 @youci 开头的 printf 只负责运行后在画布上显示中间值,不影响输出和判题,不用改。

提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论