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数据结构之Array用法实例
Oct 09 Python
Python ldap实现登录实例代码
Sep 30 Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 Python
python如何重载模块实例解析
Jan 25 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
Python初学者常见错误详解
Jul 02 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 Python
Python实现自动整理文件的脚本
Dec 17 Python
浅谈pytorch中的dropout的概率p
May 27 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
德生S2000电路分析
2021/03/02 无线电
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
Python lambda和Python def区别分析
2014/11/30 Python
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
深入理解Python中各种方法的运作原理
2015/06/15 Python
python保存字符串到文件的方法
2015/07/01 Python
python图片验证码生成代码
2016/07/02 Python
python实现接口并发测试脚本
2019/06/25 Python
Python之指数与E记法的区别详解
2019/11/21 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
总经理助理职责
2014/02/04 职场文书
21岁生日感言
2014/02/27 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
英语通知范文
2015/04/22 职场文书
订货会主持词
2015/07/01 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
Pandas数据结构之Series的使用
2022/03/31 Python
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang