python 函数递归 (recursion)
Python中能使用循环替代递归的尽量使用,但是有时候为了代码的可读性、简洁性必须使用递归。
- 例如求一个嵌套列表的和
1
2
3
4
5
6
7
8
9a = [1,[2,[3,4],5],6,[7,8]]
def sumtree(L: list) -> int:
total = 0
for x in L:
if not isinstance(x, list):
total += x # 对于数字直接求和
else:
total += sumtree(x) # 递归调用自身,循环子列表
return total - 阶乘
1 | # 1*2*3*4*5 |
递归的优点
- 代码干净整洁,可读性强
- 将复杂的任务分解成简单的子任务
递归缺点
- 递归占用大量内存和时间
- 递归函数调试困难