何为递归,大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归。
递归即为自己调用自己
三要素:
- 明确递归终止条件
- 给出递归终止时处理方法
- 提取重复逻辑,缩小问题规模
斐波那契数列
def fun(n):
# print(n)
if n <= 1:
return n
return fun(n - 1) + fun(n - 2)
fun(4)
执行顺序
实现tree命令
import os
def tree(path, layer=0):
listdir = os.listdir(path)
for index, file in enumerate(listdir):
file_path = os.path.join(path, file)
print("| " * (layer - 1), end='')
if layer > 0:
print('\__' if index == len(listdir) - 1 else '|--', end='')
print(file)
if os.path.isdir(file_path):
tree(file_path, layer + 1)
tree('..')
阶乘
def fun2(n):
if n == 1:
return n
return n * fun2(n - 1)
print(fun2(3))