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 相关文章推荐
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
Python 多线程抓取图片效率对比
Feb 27 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
Python比较2个时间大小的实现方法
Apr 10 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
python实现单链表的方法示例
Sep 03 Python
Python模块汇总(常用第三方库)
Oct 07 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 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
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
盛大笔试题
2016/11/05 面试题
英语教学随笔感言
2014/02/20 职场文书
主题教育活动总结
2014/05/05 职场文书
公民代理授权委托书
2014/09/24 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
PHP命令行与定时任务
2021/04/01 PHP