网站首页 > 文章中心 > 其它

python的递归函数

作者:小编 更新时间:2023-08-21 19:17:52 浏览量:244人看过

Python?递归函数基例

所谓基例就是不需要递归就能求解的,一般来说是问题的最小规模下的解.

例如:斐波那契数列递归,f(n)

=

f(n-1)

+

再比如:汉诺塔递归,基例就是1个盘子的情况,只需移动一次,无需递归

递归必须有基例,否则就是无法退出的递归,不能求解.

Python 实现递归

第一段:使用递归的背景

先来看一个?接口结构:

可以理解为children是个对象,他包含了一些属性,特别的是其中有一个属性与父级children是一模一样的,他包含父级children所有的属性.

比如每个children都包含了一个name字段,我们要拿到所有children里name字段的值,这时候就要用到递归啦~

第二段:find_children.py

拆分理解:

①首先import requests库,用它请求并获取接口返回的数据

我们的函数调用:find_children(node_f, 'children')

其中,node_f:json字段

children:递归对象

以下这段是实现递归的核心:

if items['children']:

items['children']不为None,表示该元素下的children字段还有子类数据值,此时满足if条件,可理解为 if 1.

items['children']为None,表示该元素下children值为None,没有后续可递归值,此时不满足if条件,可理解为 if 0,不会再执行if下的语句(不会再递归).

至此,每一层级中children的name以及下一层级children的name就都取出来了

希望到这里能让粉丝们变的更强理解递归的思路,以后根据这个模板直接套用就行

(晚安啦~)

源码参考:

关于python递归函数怎样理解

递归的思想主要是能够重复某些动作,比如简单的阶乘,次方,回溯中的八皇后,数独,还有汉诺塔,分形.

由于堆栈的机制,一般的递归可以保留某些变量在历史状态中,比如你提到的return x * power..., 但是某些或许庞大的问题或者是深度过大的问题就需要尽量避免递归,因为可能会栈溢出.还有一个问题是~python不支持尾递归优化!!!!所以~还是尽量避免递归的出现.

def power(x, n)

if n 0:

return 1

return x * power(x, n - 1)

当函数形参n=0的时候,开始回退~直到第一次调用power结束.

以上就是土嘎嘎小编为大家整理的python的递归函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章