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中字符编码简介、方法及使用建议
Jan 08 Python
python使用Image处理图片常用技巧分析
Jun 01 Python
python中lambda()的用法
Nov 16 Python
Python实现采用进度条实时显示处理进度的方法
Dec 19 Python
python编写分类决策树的代码
Dec 21 Python
Python读写docx文件的方法
May 08 Python
python3 中文乱码与默认编码格式设定方法
Oct 31 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
使用python对文件中的数值进行累加的实例
Nov 28 Python
使用TensorFlow搭建一个全连接神经网络教程
Feb 06 Python
Jupyter Notebook的连接密码 token查询方式
Apr 21 Python
Python爬虫基础之爬虫的分类知识总结
May 13 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 session 检测和注销
2009/03/16 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
PHP微信API接口类
2016/08/22 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
浅谈PHP封装CURL
2019/03/06 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
2020/04/28 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
使用Python对SQLite数据库操作
2017/04/06 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
Python实现打印实心和空心菱形
2019/11/23 Python
Python hashlib模块实例使用详解
2019/12/24 Python
python实现视频压缩功能
2020/12/18 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
女大学生自我鉴定
2013/12/09 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
体育口号大全
2014/06/18 职场文书
表扬通报怎么写
2015/01/16 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
毕业生学校组织意见
2015/06/04 职场文书
Python+pyaudio实现音频控制示例详解
2022/07/23 Python