怎么在Python3中使用递归函数

本篇文章给大家分享的是有关怎么在Python3中使用递归函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

概述

怎么在Python3中使用递归函数

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

递归求和

我们可以利用递归函数实现一个Python内置函数sum()的递归版。

#递归
defd_sum(L):
ifnotL:
return0
else:
returnL[0]+d_sum(L[1:])

sum_l=d_sum(range(10))
print(sum_l)

示例结果

45

该递归函数怎么实现列表元素相加的呢? 我们知道函数是有本地作用域的,对函数调用的每一个打开的时候,在运行时调用堆栈上都有自己的一个本地作用域的副本,即L在每个层级都是不同的,比如我们可以通过每次调用时添加一个打印语句,更加直观展示每个层级L的情况

#递归
defd_sum(L):
#打印该层级L
print(L)
ifnotL:
return0
else:
returnL[0]+d_sum(L[1:])
#构建0-10数字元素列表
L=[iforiinrange(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

处理任意结构

比如我们可以利用递归计算一个嵌套的子列表结构中所有数字的总和

defdd_sum(L):
tot=0
forxinL:
ifnotisinstance(x,list):
tot+=x
else:
tot+=dd_sum(x)
returntot

#嵌套列表
L=[1,[2,3],[4,[5,6,7],8],9]
sum_l=dd_sum(L)
print(sum_l)

示例结果:

45

以上就是怎么在Python3中使用递归函数,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。

发布于 2021-04-15 01:55:44
收藏
分享
海报
0 条评论
154
上一篇:怎么在javascript中使用substring实现一个展开与收缩文字功能 下一篇:使用javascript怎么设置系统时间
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码