这一章节我们来讨论一下递归函数,一个经常避免使用的,但又不得不学会的函数

递归函数:函数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 递归函数与分解递归函数的执行步骤相关推荐

  1. 零基础学python需要多久-零基础学python大概要多久

    Python是目前公认的全球5大流行语言之一,从云计算.大数据到人工智能,Python无处不在,同时Python被誉为神奇的"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使 ...

  2. 编程没基础学python多长时间--零基础学Python,从入门到精通需要多长时间

    求一份小甲鱼的<零基础入门学习Python>视频教程 评论 本系列教程面向础的同学,是一个深入浅通俗易懂的Python3视频教程. 适群 完全零基础入门,不需要任何前置知识. 教程概述 前 ...

  3. python从入门到精通需要多久--零基础学Python,从入门到精通需要多长时间

    求一份小甲鱼的<零基础入门学习Python>视频教程 评论 本系列教程面向础的同学,是一个深入浅通俗易懂的Python3视频教程. 适群 完全零基础入门,不需要任何前置知识. 教程概述 前 ...

  4. 零基础学python大概要多久-零基础学python大概要多久

    Python是目前公认的全球5大流行语言之一,从云计算.大数据到人工智能,Python无处不在,同时Python被誉为神奇的"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使 ...

  5. python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  6. 零基础学python免费网课-零基础学Python量化投资,超值线上课程反复回看

    原标题:零基础学Python量化投资,超值线上课程反复回看 超值网络课程 量化投资是一种严谨.系统化的投资方式,相比起传统投资,量化投资风险低回报高,但是它要求投资者使用数据处理分析.计算机编程技术. ...

  7. 0基础学python看什么书-零基础学python编程需要看什么书?

    原标题:零基础学python编程需要看什么书? 随着互联网迅速发展,python也呈现出水涨船高的态势.近年来,python在编程语言中一直名列前茅.编程初学者纷纷选择Python作为第一语言.Pyt ...

  8. 零基础学python需要多久-零基础学Python要多久

    原标题:零基础学Python要多久 这几年Python逐渐被越来越多的人熟知,无论是因为工作还是兴趣,很多人都想学习Python.大部分的人都是零基础学习,自然免不了会问零基础学Python要多久这样 ...

  9. python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

最新文章

  1. 微生物组数据库: 一站式环境基因组学数据云平台更新啦!
  2. linux的运维管理UNIT3
  3. 降低网站跳出率的六个方法(亲身使用)
  4. 06-Java 本地文件操作
  5. HTTPS和TCP的关系
  6. 时域补零对于DFT谱的影响
  7. 计算机系毕业生自我评价,计算机系应届毕业生自我评价范文
  8. 从零开始学Koa2(一)
  9. 35岁是青春的后期你最好把下面十件事做好
  10. js Indexof的用法
  11. Android 实现 相机、相册功能 + 图片存取数据库操作
  12. java 数据库 模板_JAVA操作数据库的模板方法
  13. java制作数字彩虹雨的代码,canvas+gif.js打造自己的数字雨头像的示例代码
  14. 极域课堂管理软件(V2016)遇到的问题——“未找到可用的网络适配器,将以脱机模式启动”
  15. 微信小程序实现canvas画圆形微信头像
  16. Excel2013 破解(编辑工作表受保护)密码
  17. 【历史上的今天】4 月 28 日:人工智能理论之父出生;大众点评上线;苹果开设 iTunes 音乐商店
  18. java-php-python-宠物救助网站的设计与实现计算机毕业设计
  19. No valid crumb was included in the request 问题定位与解决
  20. Android malware样本SLocker Mobile Ransomware

热门文章

  1. 华为交换机命令_华为交换机故障诊断命令display怎么用?
  2. 小程序开发代码_企业为什么要选择小程序定制开发?
  3. html打开网页过场动画_轻松教你学会网页设计
  4. 9_python基础—数据序列(公共方法)
  5. postman参数化--上一个接口返回的数据作为下一个接口的参数
  6. 置为底层_头一次见浴室装修这样设计,浴缸两头砌上置物台,实用又方便
  7. 零基础学python尹会生_编程零基础应当如何开始学习 Python?
  8. ina3221嵌入式linux,嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之文件系统
  9. Python的安装路径
  10. Spark基础学习笔记12:Scala内建控制结构