aibiology

Artificial intelligence in biology

0%

python函数递归

python 函数递归 (recursion)

Python中能使用循环替代递归的尽量使用,但是有时候为了代码的可读性、简洁性必须使用递归。

  • 例如求一个嵌套列表的和
    1
    2
    3
    4
    5
    6
    7
    8
    9
    a = [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
2
3
4
5
6
7
8
# 1*2*3*4*5

def calc_factorial(x: int) -> int:
if x == 1:
return 1
else:
return (x * calc_factorial(x-1))

递归的优点

  • 代码干净整洁,可读性强
  • 将复杂的任务分解成简单的子任务

递归缺点

  • 递归占用大量内存和时间
  • 递归函数调试困难