Python 递归函数详解及实例


Posted in Python onDecember 27, 2016

Python 递归函数

如果一个函数体直接或者间接调用自己,那么这个函数就称为递归函数.也就是说,递归函数体的执行过程中可能会返回去再次调用该函数.在python里,递归函数不需要任何特殊的语法,但是它需要付出一定的努力去理解和创建.
我们会以一个简单的例子开始:写一个函数求一个自然数中所有数字的和.在设计递归函数的时候,我们会寻找能把问题分解成简单的问题的方法.在这道题中,运算符%和//可以用来把一个数分成两部分:最低位和不包含最低位数字两部分.

Python 递归函数详解及实例

18117的数字和为:1+8+1+1+7=18.这样我们就可以分割这个数.把这个数分割成最低位7和不包含最低位数字的和1+8+1+1=11.这种分割方法给我们提供了一个算法:通过最低位n%10与n//10的数字之和相加来计算数n的数字之和.这种方法存在特殊情况:如果一个数只有一位,那么它的数字之和就是它本身.这个算法可以用递归函数实现.

def sum_digit(n):
  """return the sum of the digit of positive integer n."""
  if n < 10:
    return n
  else:
   last = n % 10
   all_but_last = n // 10
   return sum_digit(all_but_last) + last

函数sum_digit的定义是完整和正确的,即使sum_digit函数在自身的函数体里被调用.

这样求一个数的数字之和的问题就被分解成了两部分:求除去最低位部分数字之和,然后加上最低位.这两个步骤全都比原问题要简单.这个函数是递归的,因为第一步的问题和原问题是相同类型的.也就是说,sum_digit的确实是我们需要去实现自然数数字求和的函数.

Python 递归函数详解及实例

我们可以理解这个递归函数是怎样使用计算环境模型成功应用的.它 不需要任何新的规范.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
将Python中的数据存储到系统本地的简单方法
Apr 11 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
Flask之flask-script模块使用
Jul 26 Python
python3.4爬虫demo
Jan 22 Python
django做form表单的数据验证过程详解
Jul 26 Python
python使用opencv在Windows下调用摄像头实现解析
Nov 26 Python
pandas提升计算效率的一些方法汇总
May 30 Python
Python实现单例模式的5种方法
Jun 15 Python
python如何读取和存储dict()与.json格式文件
Jun 25 Python
python实现二维码扫码自动登录淘宝
Dec 27 #Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 #Python
Python中如何获取类属性的列表
Dec 26 #Python
Python中强大的命令行库click入门教程
Dec 26 #Python
Python快速从注释生成文档的方法
Dec 26 #Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 #Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 #Python
You might like
关于手调机和数调机的选择
2021/03/02 无线电
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
FCK调用方法..
2006/12/21 Javascript
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
使用Python设计一个代码统计工具
2018/04/04 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
opencv实现图像几何变换
2021/03/24 Python
财务会计大学生自我评价
2014/04/09 职场文书
车辆转让协议书
2014/04/15 职场文书
大学生党员承诺书
2014/05/20 职场文书
保险公司开门红口号
2014/06/21 职场文书
军人离婚协议书样本
2014/10/21 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
师德师风培训感言
2015/08/03 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP