文档章节

零基础学python-18.3 递归函数vs循环和递归处理任意结构

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 384
阅读 2
收藏 0

这一章节我们来讨论两个话题:递归函数vs循环和递归处理任意结构

1.递归函数vs循环

再次沿用上一章节的递归代码:

>>> def test (aList):
	if not aList:
		return 0
	else :
		return aList[0]+test(aList[1:])

	
>>> a=[1,2,3,4,5]
>>> test(a)
15

同时,我们也用循环实现上面的功能:

>>> def test2(aList):
	sumNum=0
	while aList:
		sumNum+=aList[0]
		aList=aList[1:]
	return sumNum

>>> a=[1,2,3,4,5]
>>> test2(a)
15
>>>

功能上两份代码都是一致的,但是从可读性上,无疑使用循环更加能够理解,而且迭代的速度在python里面是非常快的,也许性能比递归更加快


2.递归处理任意结构

我们找出一些极端例子:

>>> def sumTree(aList):
	tot=0
	for item in aList:
		if not isinstance(item,list):
			tot+=item
		else:
			tot+=sumTree(item)
	return tot

>>> a=[[1,[2,[3,[4,[5,6],7],8],9]]]
>>> sumTree(a)
45
>>>

上面是一个比较极端的例子,在时间运用python的过程中一般不会出现


3.递归的应用场景:

1)树的遍历

2)导入链的遍历

对于上面的两种情况,递归还是非常好使的


总结:这一章节主要结束了递归函数vs循环、递归处理任意结构和递归的应用场景

这一章节就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录

 



版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/raylee2007/article/details/48548901

共有 人打赏支持
raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
python语法小细节及小定义(一)

首先,Python是强类型语言,动态类型语言。 那么什么是强类型语言?就是数据类型非常固定的语言,例如说python中的str类型数据和int类型数据不能互相作用。而c和js就是弱类型语言。 动态类型...

戴千岩
2017/09/26
0
0
他学习一年Python找不到工作,大佬都说你别再学Python了!

都说,滴水穿石非一日之功。然而有些人即使奋斗一辈子也比不上别人一年,别人学习一年比不得你学习一个月。其中缘由,有些人看了大半辈子还没看明白。 即使Python这么火,为何你学习一年的P...

柯西带你学编程
06/06
0
0
Python3 与 NetCore 基础语法对比(Function专栏)

Jupyter最新排版:https://www.cnblogs.com/dotnetcrazy/p/9175950.html 昨晚开始写大纲做demo,今天牺牲中午休息时间码文一篇,希望大家点点赞 O(∩_∩)O NetCore:https://github.com/lota...

毒逆天
06/15
0
0
程序员必备,快速学习 Python 的全套14张思维导图(附高清版下载)

后台回复关键词 思维导图 可获取本文中的高清思维导图(PDF版) ML & AI∣一个有用的公众号 长按,识别二维码,加关注 获取更多精彩文章

micf435p6d221ssdld2
05/23
0
0
Python基础总结成千行代码,让Python入门更简单!

只要学会这千行代码,不管你是零基础还是弱基础或是没有接触过编程,都可以快速入门Python!当时我就不信邪啊,等我看完之后,即使作为一个Python老鸟了,还是领会到了很多教授他的独特见解!...

糖宝lsh
09/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

#mysql50# not Exist

data 目录有中文名称,可能是复制的"复件...."

少年不搬砖老大徒伤悲
20分钟前
1
0
在yii2中,让你action参数支持POST数据的小方法

我们先来看一段代码 class RaController extends Controller { public $enableCsrfValidation = false; public function actionSay($username = '',$city = ''){ echo "{$......

阿北2017
29分钟前
2
0
macOS 10.14 Mojave

在近日发布的 macOS 10.14 Mojave 操作系统中,有人发现它(在某些机型中)悄然禁用了先前的「次像素平滑渲染」选项,导致部分(尤其是使用非高分辨率显示器)用户觉得字体比先前的更细更难看...

火力全開
33分钟前
2
0
 实现分布式锁的正确姿势

实现分布式锁的正确姿势 原理分析 最近看到好多博主都在推分布式锁,实现方式很多,基于db、redis、zookeeper。zookeeper方式实现起来比较繁琐,这里我们就谈谈基于redis实现分布式锁的正确实...

DemonsI
38分钟前
2
0
微信小程序 、支付宝小程序、百度小程序和钉钉e应用的汇总

2018年9月25日 百度小程序开放企业申请 微信小程序:现在微信小游戏都热火朝天了,而且已经有了云开发,包括提供的能力、文档、社区等都相对完善,也有相关的变现方式; 支付宝小程序:https...

to_be_better
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部