Python递归函数
2018-11-22 08:45:42来源:博客园 阅读 ()
一、递归函数两大要素 -- 终止条件和递归方程
sum(n)=n+sum(n-1) #递归方程,以下为其展开 sum(n)=n+(n-1)+sum(n-2) ... sum(n)=n+(n-1)+(n-2)+...+sum(1)
到这里递归循环就应该结束了,很自然的我们得到了递归循环的结束条件:n=0,此时的返回就不是0+sum(-1)了,直接返回0结束循环即可。
从哪里开始和结束要分情况,在上例中有明确的结束条件n=0,n>0则进入递归循环,其隐形的条件就是n不能小于0,因此其开始条件写个n>0即可。
二、递归函数示例:
#!/usr/bin/env python def sum(list): sum = 0 # Add every number in the list. for i in range(0, len(list)): sum = sum + list[i] # Return the sum. return sum print(sum([5,7,3,8,10]))
#!/usr/bin/env python def sum(list): if len(list) == 1: return list[0] else: return list[0] + sum(list[1:]) print(sum([5,7,3,8,10]))
以上两个函数,第一个使用普通循环方式求和,第二个使用递归循环的方式求和,从效率来讲第一个更好,从逻辑上来讲递归函数更加清晰简洁。
#!/usr/bin/env python import sys sys.setrecursionlimit(5000) #阶乘实现示例: def factorial(n): if n == 1: return 1 else: return n * factorial(n-1) print factorial(3000)
四、递归函数的使用场景:
#coding=utf-8 from xml.dom.minidom import parse import sys reload(sys) sys.setdefaultencoding("utf-8") root=parse('<xml文件名>') #开始遍历节点 def iter_xmlNodes(node): if node == None: return if node.nodeType == node.ELEMENT_NODE: #只有ELEMENT_NODE类型的node才有遍历的必要 print ("ELEMENT Node:%s" %(node)) for child in node.childNodes: iter_xmlNodes(child) else: print ("Node:%s, NodeType:%d" %(node,node.nodeType)) #对于前两个if,第一个if表示终止条件,第二个if表示对输入节点的处理,对其子节点执行递归。 iter_xmlNodes(root)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:数据解析
下一篇:python3多线程—卖票
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash