本章内容:
学习递归;如何将问题分解成基线条件和递归条件。
1) 每个递归函数都有两部分:基线条件(base case)和递归条件(recursive base)。例如:打印3...2...1
def countdown(i):
print(i)
if i <= 0:
return
else:
countdown(i-1)
2) 调用栈(call stack):调用另一个函数时,当前函数暂停并处于未完成状态。
3)小结:
递归指的是调用自己的函数;
每个递归函数都有两个条件:基线条件和递归条件。
栈有两种操作:压入和弹出。
所有函数调用都进入调用栈。
调用栈可能很长,这将占用大量的内存。
递归调用计算7的阶乘:
def fact(x):
if x == 1:
return x
else:
return x*fact(x-1)
print(fact(7))