03-尝试第一次递归
1.1.1 尝试第一次递归
上述计算斐波那契序列数(如图1-1所示)的公式是一种伪代码形式,可将其简单地转换为一个Python递归函数,如代码清单1-1和代码清单1-2所示。所谓递归函数是一种调用自己的函数。这次机械的转换将作为你编写函数的首次尝试,返回的是斐波那契序列中的给定数。
代码清单1-1 fib1.py
def fib1(n: int) -> int:
return fib1(n - 1) + fib1(n - 2)

下面试着带上参数值来调用这个函数。
代码清单1-2 fib1.py(续)
if __name__ == "__main__":
print(fib1(5))
若我们运行fib1.py,系统就会生成一条错误消息:
RecursionError: maximum recursion depth exceeded
这里有一个问题, fib1() 将一直运行下去,而不会返回最终结果。每次调用 fib1() 都会再多调用两次 fib1() ,如此反复永无止境。这种情况被称为无限递归(如图1-2所示),类似于无限循环(infinite loop)。
