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 递归函数详解及实例

本文地址: http://www.cppcns.com/jiaoben/python/175039.html

python中递归函数的实例_Python 递归函数详解及实例相关推荐

  1. python argv 详解_对python中的argv和argc使用详解

    主要问题 为什么argv中第一个,即index=0的内容就是文件名? python中argc是用什么实现的? 概念解释 argc:argument counter,命令行参数个数 argv:argum ...

  2. Python中的__name__和__main__含义详解

    背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main():     ...... if __name__ == "__ma ...

  3. python的raw_ input是什么意思-对python中raw_input()和input()的用法详解

    最近用到raw_input()和input()来实现即时输入,就顺便找了些资料来看,加上自己所用到的一些内容,整理如下: 1.raw_input() raw_input([prompt]) -> ...

  4. python中str和input_对python中raw_input()和input()的用法详解

    最近用到raw_input()和input()来实现即时输入,就顺便找了些资料来看,加上自己所用到的一些内容,整理如下: 1.raw_input() raw_input([prompt]) -> ...

  5. python3 isinstance用法_对python中assert、isinstance的用法详解

    1. assert 函数说明: Assert statements are a convenient way to insert debugging assertions into a program ...

  6. python中关于深拷贝和浅拷贝的详解

    python中关于深拷贝和浅拷贝的详解 概述 在python的语法中,有两种变量的拷贝方式 一种是深拷贝,一种是浅拷贝 我们先说深拷贝 语法 这里需要通过导入系统的copy模块中的deepcopy才可 ...

  7. python中zip的使用_浅谈Python中的zip()与*zip()函数详解

    前言 1.实验环境: Python 3.6: 2.示例代码地址:下载示例: 3.本文中元素是指列表.元组.字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表). zip(*iterables ...

  8. python中验证码连通域分割的方法详解

    python中验证码连通域分割的方法详解 这篇文章主要给大家介绍了关于python中验证码连通域分割的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需 ...

  9. python中时间戳、字符串之间转换详解

    [转载]python中时间戳.字符串之间转换详解 (2013-04-30 17:36:07) 转载▼ 标签: 转载 原文地址:python中时间戳.字符串之间转换详解作者:doris0920 1)秒数 ...

  10. python gil 解除_详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案

    先看一道GIL面试题: 描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因. GIL:又叫全局解 ...

最新文章

  1. 理解Promise (4)
  2. 对于技术,工程师没有几个写博客的
  3. orm设置bool型 python_Python SQLAlchemy入门教程
  4. PHPMailer 报错:SMTP ERROR: Failed to connect to server: (0)
  5. python IDLE颜色设置
  6. SpringCloud:Gateway网关配置及使用
  7. 数据库入门_查询语句
  8. 安装完固态硬盘后计算机里没显示,如何解决安装固态硬盘后系统看不到的问题[详细介绍]...
  9. ERROR 1366 (HY000): Incorrect string value: ‘\xE8\xB5\xB5 \xE9\x9B...‘ for column ‘s_name‘ at row 1
  10. ArcEngine编辑模块——将线段按距离、按比例分割成两部分
  11. python课程回顾复习记录简要6
  12. canvas中的橡皮檫
  13. 2022年武汉市人工智能领域技术成果征集内容及申报条件
  14. ESD和TVS管的区别
  15. 天猫淘宝整合营销 为你的店铺点亮奇迹!
  16. codevs 4189 字典树
  17. 跳出任务管理的泥沼,拥抱甘特图的怀抱
  18. 2D Application
  19. 万卷书 - 如何讲好故事 [Wired for Story]
  20. 阿里云、腾讯云centos7安装mysql

热门文章

  1. Nature Microbiology:微生物与海洋全球变化
  2. signature=2ee20a16234208d4dd8bbd7fe87bb472,sstk-20200428
  3. R语言数据包自带数据集之ISwR包的melanom数据集字段解释、数据导入实战
  4. R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线、对指定范围的数据拟合曲线
  5. R语言seq函数生成数据序列实战
  6. Stringtie进行转录本组装和定量
  7. 在layui中使用ajax传值给后台,浅谈layui 数据表格前后台传值的问题
  8. c语言求婚代码大全,这是我见过最浪漫的程序员求婚方式
  9. oracle最大实例数,【Oracle】RAC的多实例数据迁移至单机的多实例。
  10. NCBI中SRA数据库简介