⚠️ 给一个漏了出口的递归补上出口

⚠️ 给一个漏了出口的递归补上出口

下面这个 fact 漏了出口,直接跑会抛 RecursionError。 补上出口,然后算 5 的阶乘。

阅读更多 →
没有出口会抛什么错

没有出口会抛什么错

运行下面这段程序,它把错误类型打出来: def down(n): return down(n - 1) try: down(5) except Exception as e:

阅读更多 →
出口条件该写 `== 0` 还是 `<= 0`

出口条件该写 `== 0` 还是 `<= 0`

把出口从 n == 0 改成 n <= 0,好处是【0】。

阅读更多 →
出口写了却还是停不下来

出口写了却还是停不下来

明明写了 if n == 0: return,递归还是停不下来,最可能是【0】。

阅读更多 →
无限递归最常见的两种写法

无限递归最常见的两种写法

递归停不下来,通常是因为【0】。

阅读更多 →
递归停不下来会怎样

递归停不下来会怎样

递归没有出口,一直往下调,最后会【0】。

阅读更多 →
数一数朴素斐波那契调了几次

数一数朴素斐波那契调了几次

补全 fib,并让它每进一次函数就把 CALLS 加一。 算 fib(6),输出 CALLS。

阅读更多 →
写一个能看见过程的递归

写一个能看见过程的递归

补全 walk:进入时把 n 记进 ORDER,然后递归到 n-1,返回时再把 n 记一次。 调用 walk(3) 之后,把 ORDER 拼起来输出。

阅读更多 →
⚠️ 它一共调用了自己多少次

⚠️ 它一共调用了自己多少次

同一个朴素写法,数一数一共进了几次函数。运行下面这段程序: CALLS = 0 def fib(n): global CALLS CALLS += 1 if n <=

阅读更多 →
第六个斐波那契数是多少

第六个斐波那契数是多少

约定 fib(0)=0、fib(1)=1。运行下面这段程序: def fib(n): if n <= 1: return n return fib(n - 1)

阅读更多 →