Python学习教程(Python学习路线):Python3之递归函数简单示例

Python学习教程(Python学习路线):Python3之递归函数简单示例bash

Python学习教程(Python学习路线):Python3之递归函数简单示例

概述函数

递归函数即直接或间接调用自身的函数,且递归过程当中必须有一个明确的递归结束条件,称为递归出口。递归极其强大一点就是可以遍历任意的,不可预知的程序的结构,好比遍历复杂的嵌套列表。学习

递归求和ui

咱们能够利用递归函数实现一个Python内置函数sum()的递归版。spa

# 递归
def d_sum(L):
 if not L:
 return 0
 else:
 return L[0] + d_sum(L[1:])
sum_l = d_sum(range(10))
print(sum_l)
复制代码

示例结果code

45
复制代码

该递归函数怎么实现列表元素相加的呢? 咱们知道函数是有本地做用域的,对函数调用的每个打开的时候,在运行时调用堆栈上都有本身的一个本地做用域的副本,即L在每一个层级都是不一样的,好比咱们能够经过每次调用时添加一个打印语句,更加直观展现每一个层级L的状况cdn

# 递归
def d_sum(L):
 # 打印该层级L
 print(L)
 if not L:
 return 0
 else:
 return L[0] + d_sum(L[1:])
# 构建 0-10 数字元素列表
L = [i for i in range(10)]
sum_l = d_sum(L)
print(sum_l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
[6, 7, 8, 9]
[7, 8, 9]
[8, 9]
[9]
[]
45
复制代码

处理任意结构blog

好比咱们能够利用递归计算一个嵌套的子列表结构中全部数字的总和教程

def dd_sum(L):
 tot = 0
 for x in L:
 if not isinstance(x, list):
 tot += x
 else:
 tot += dd_sum(x)
 return tot
# 嵌套列表
L = [1,[2,3],[4,[5,6,7],8],9]
sum_l = dd_sum(L)
print(sum_l)
复制代码

示例结果:递归

45
复制代码

这种处理方式看似复杂,咱们可能更多会利用循环语句替代,可是使用递归函数逻辑简单清晰,这是使用的一大优势。

更多的Python学习教程Python学习路线会继续为你们分享!

相关文章
相关标签/搜索