递归函数合式分解python_零基础学python-18.2 递归函数与分解递归函数的执行步骤
这一章节我们来讨论一下递归函数,一个经常避免使用的,但又不得不学会的函数
递归函数:函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数
我下面以递归求和为例子:
>>> def test(x):
print(x)
if not x:
return 0
else :
return x[0]+test(x[1:])
>>> test([1,2,3,4,5])
[1, 2, 3, 4, 5]
[2, 3, 4, 5]
[3, 4, 5]
[4, 5]
[5]
[]
15
如果我单纯给出上面的例子,大家是不是觉得非常的难以理解呢?
我把上面的代码换一下:
>>> def test(x):
print(x)
if not x:
return 0
else :
a=test(x[1:])
print(a)
return x[0]+a
>>> test([1,2,3,4,5])
[1, 2, 3, 4, 5]
[2, 3, 4, 5]
[3, 4, 5]
[4, 5]
[5]
[]
0
5
9
12
14
15
>>>
这样可能理解起来会容易点,我下面将会一步步的将上面的函数的执行过程分解给大家
1.当[1,2,3,4,5]赋值到参数x里面,它会先执行print语句
2.然后判断x是否还有对象,因为x存在对象,所以执行else的语句
3.现在执行a=test[1:]这个语句,现在的x=[1,2,3,4,5],然后传递新的test的参数x的对象是[2,3,4,5]
循环步骤1到3,直到x=[]
4.由于test([])返回0,返回0,注意:这个时候test(x)里面的x是[],反推回去,也即是x[1:]=[],x=[5]
5.由于test([])执行完返回0,x=[5],所以这个时候test([5])返回5
6.同理,test([4,5])返回9,test([3,4,5])返回12,直到a=test([2,3,4,5]),a=14,打印a,然后x[0]=1,x[0]+14=15,因此最后会返回15
其实,上面的代码类似于:
>>> def test(aList):
res=0
for item in aList:
res+=item
return res
>>> test([1,2,3,4,5])
15
>>>
很多时候递归跟循环接近,但是递归有一个好处就是遍历结构所有的数据项
由于感觉上面说到不够明了,所以我们下面再举一个简单一点的例子:test([1,2,3])
>>> def test(x):
if not x:
return 0
else :
a=test(x[1:])
return x[0]+a
>>> test([1,2,3])
6
>>>
分解步骤:
test([1,2,3])
if not x:
return 0
else:
a=test([2,3])
if not x:
return 0
else:
a=test([3])
if not x:
return 0
else:
a=test([])
if not x:
return 0#对应test([])
return 3+0#对应test([3])
return 3+2#对应test([2,3])
return 5+1#对应test([1,2,3])
>>>6
上面的步骤应该比较明细的了
总结:我们这一章节简单介绍了递归函数以及分解了递归函数的步骤
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
版权声明:本文为博主原创文章,未经博主允许不得转载。
递归函数合式分解python_零基础学python-18.2 递归函数与分解递归函数的执行步骤相关推荐
- 零基础学python需要多久-零基础学python大概要多久
Python是目前公认的全球5大流行语言之一,从云计算.大数据到人工智能,Python无处不在,同时Python被誉为神奇的"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使 ...
- 编程没基础学python多长时间--零基础学Python,从入门到精通需要多长时间
求一份小甲鱼的<零基础入门学习Python>视频教程 评论 本系列教程面向础的同学,是一个深入浅通俗易懂的Python3视频教程. 适群 完全零基础入门,不需要任何前置知识. 教程概述 前 ...
- python从入门到精通需要多久--零基础学Python,从入门到精通需要多长时间
求一份小甲鱼的<零基础入门学习Python>视频教程 评论 本系列教程面向础的同学,是一个深入浅通俗易懂的Python3视频教程. 适群 完全零基础入门,不需要任何前置知识. 教程概述 前 ...
- 零基础学python大概要多久-零基础学python大概要多久
Python是目前公认的全球5大流行语言之一,从云计算.大数据到人工智能,Python无处不在,同时Python被誉为神奇的"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使 ...
- python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...
众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...
- 零基础学python免费网课-零基础学Python量化投资,超值线上课程反复回看
原标题:零基础学Python量化投资,超值线上课程反复回看 超值网络课程 量化投资是一种严谨.系统化的投资方式,相比起传统投资,量化投资风险低回报高,但是它要求投资者使用数据处理分析.计算机编程技术. ...
- 0基础学python看什么书-零基础学python编程需要看什么书?
原标题:零基础学python编程需要看什么书? 随着互联网迅速发展,python也呈现出水涨船高的态势.近年来,python在编程语言中一直名列前茅.编程初学者纷纷选择Python作为第一语言.Pyt ...
- 零基础学python需要多久-零基础学Python要多久
原标题:零基础学Python要多久 这几年Python逐渐被越来越多的人熟知,无论是因为工作还是兴趣,很多人都想学习Python.大部分的人都是零基础学习,自然免不了会问零基础学Python要多久这样 ...
- python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排
众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...
最新文章
- 微生物组数据库: 一站式环境基因组学数据云平台更新啦!
- linux的运维管理UNIT3
- 降低网站跳出率的六个方法(亲身使用)
- 06-Java 本地文件操作
- HTTPS和TCP的关系
- 时域补零对于DFT谱的影响
- 计算机系毕业生自我评价,计算机系应届毕业生自我评价范文
- 从零开始学Koa2(一)
- 35岁是青春的后期你最好把下面十件事做好
- js Indexof的用法
- Android 实现 相机、相册功能 + 图片存取数据库操作
- java 数据库 模板_JAVA操作数据库的模板方法
- java制作数字彩虹雨的代码,canvas+gif.js打造自己的数字雨头像的示例代码
- 极域课堂管理软件(V2016)遇到的问题——“未找到可用的网络适配器,将以脱机模式启动”
- 微信小程序实现canvas画圆形微信头像
- Excel2013 破解(编辑工作表受保护)密码
- 【历史上的今天】4 月 28 日:人工智能理论之父出生;大众点评上线;苹果开设 iTunes 音乐商店
- java-php-python-宠物救助网站的设计与实现计算机毕业设计
- No valid crumb was included in the request 问题定位与解决
- Android malware样本SLocker Mobile Ransomware
热门文章
- 华为交换机命令_华为交换机故障诊断命令display怎么用?
- 小程序开发代码_企业为什么要选择小程序定制开发?
- html打开网页过场动画_轻松教你学会网页设计
- 9_python基础—数据序列(公共方法)
- postman参数化--上一个接口返回的数据作为下一个接口的参数
- 置为底层_头一次见浴室装修这样设计,浴缸两头砌上置物台,实用又方便
- 零基础学python尹会生_编程零基础应当如何开始学习 Python?
- ina3221嵌入式linux,嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之文件系统
- Python的安装路径
- Spark基础学习笔记12:Scala内建控制结构