正在加载...

调用自身的函数

名字 down 写在 down 里面,每一步交出的数都小 1。所以 down(3) 先写 3,再写 2,再写 1。

if n == 0: return 这一行是停下的地方。n 是 0 时,这一行运行,down 不再用。不写这一行,步骤不会结束,程序也走不完。那种写坏的形式下面没有。

3,然后 2,然后 1

python
def down(n):
    if n == 0:
        return
    print(n)
    down(n - 1)

down(3)

屏幕上是 3,然后 2,然后 1。print 在下一次 down 之前运行。down(1) 写出 1,然后到 down(0)。down(0) 碰上停下的那一行,什么都不写,程序结束。

把 print 挪到 down(n - 1) 后面那一行。较小的数先写出来,因为每一步都等里面的那一步结束。

1,然后 2,然后 3

python
def down(n):
    if n == 0:
        return
    down(n - 1)
    print(n)

down(3)

屏幕上是 1,然后 2,然后 3。down(0) 仍然什么都不写。print 在回来的路上运行,所以 1 写在 2 前面,2 写在 3 前面。

单独的 down(0) 到不了 print。停下的那一行马上运行。

down(0) 什么都不写

python
def down(n):
    if n == 0:
        return
    print(n)
    down(n - 1)

down(0)

屏幕保持空白,程序结束。n 一开始就是 0,所以 print 和下一次 down 都被跳过。

把屏幕看反

第二个程序不是 3,然后 2,然后 1。那个顺序属于第一个程序,那里 print 在前面。从任何一个里删掉 if n == 0: return,步骤就不会结束。不要运行那一版。

下一页是一列值。这一页只看一个用自己名字的函数,以及让它在 0 停下的那一行。

顺着数字看

  1. 第一个程序先写什么,后写什么?
  2. 第二个程序先写什么,后写什么?
  3. 第三个程序写什么?
  4. 删掉停在 0 的那一行。程序会走完吗?

down 做什么

down 里面的名字 down,配上 n - 1,从 3 走到 1。这一步前面的 print 写出 3,然后 2,然后 1。后面的 print 写出 1,然后 2,然后 3。if n == 0: return 是程序能结束的原因。down(0) 什么都不写。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
5
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部