Python 递归函数是一种函数调用自身的技巧。使用递归方法可以用来处理集合(比如列表、元组等)。
递归方法一般都分为两个步骤:递归基和递归关系。即要找到最基本的问题,然后问题规模逐渐缩小,直至满足递归基,返回结果。
下面我们提供两个使用递归处理集合的示例:
示例一:计算集合中所有数的和
def sum_list(lst):
# 递归基,如果列表为空,直接返回0
if len(lst) == 0:
return 0
# 递归关系,列表中第一个数加上剩余数的和
else:
return lst[0] + sum_list(lst[1:])
# 待求和的列表
lst = [1, 2, 3, 4, 5]
# 输出结果
print(sum_list(lst)) # 15
上述代码中,我们通过递归方法计算出列表中所有数的和。在递归关系中,我们每次都把第一个数跟剩下的数继续做累加,直到列表中没有数为止。
示例二:查找嵌套列表中的最大数
def max_num(lst):
# 递归基,当前列表没有元素,返回None
if not lst:
return None
# 递归关系,对于嵌套列表,递归每一个子列表找到最大数
else:
# 遍历嵌套列表,当前元素是列表类型则继续递归
maximum = lst[0]
for item in lst:
if type(item) == list:
sub_max = max_num(item)
if sub_max is not None and sub_max > maximum:
maximum = sub_max
elif item > maximum:
maximum = item
return maximum
# 嵌套列表,示例中最大数为6
lst = [1, 2, [3, 4, [5, 6], 7], 8, [9]]
# 输出结果
print(max_num(lst)) # 6
上述代码中,我们使用递归方法查找嵌套列表中的最大数。对于嵌套列表,递归每一个子列表继续查找最大数,最后返回整个嵌套列表中的最大数。
使用递归处理集合可以使代码更加简洁优雅,但由于递归可能会导致栈溢出等问题,建议在使用时进行合理的优化处理。