Python 递归函数详解及实例

 更新时间:2016年12月27日 09:23:38   投稿:lqh  
这篇文章主要介绍了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的确实是我们需要去实现自然数数字求和的函数.

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

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

相关文章

  • Flask框架运用Ajax实现轮询动态绘图

    Flask框架运用Ajax实现轮询动态绘图

    Ajax是异步JavaScript和XML可用于前后端交互,本文将通过Ajax轮询获取后端的数据,前台使用echart绘图库进行图形的生成与展示,最后实现动态监控内存利用率的这个功能,需要的可以参考一下
    2022-11-11
  • Python批量获取并保存手机号归属地和运营商的示例

    Python批量获取并保存手机号归属地和运营商的示例

    这篇文章主要介绍了Python批量获取并保存手机号的归属地和运营商的示例,帮助大家更好的利用python处理数据,感兴趣的朋友可以了解下
    2020-10-10
  • pygame游戏之旅 按钮上添加文字的方法

    pygame游戏之旅 按钮上添加文字的方法

    这篇文章主要为大家详细介绍了pygame游戏之旅的第11篇,按钮上添加文字的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python 实现数据结构-堆栈和队列的操作方法

    Python 实现数据结构-堆栈和队列的操作方法

    队、栈和链表一样,在数据结构中非常基础一种数据结构,同样他们也有各种各样、五花八门的变形和实现方式。这篇文章主要介绍了Python 实现数据结构-堆栈和队列的操作方法,需要的朋友可以参考下
    2019-07-07
  • python实现不同文件夹下的函数相互调用

    python实现不同文件夹下的函数相互调用

    这篇文章主要介绍了python实现不同文件夹下的函数相互调用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 分析Python中解析构建数据知识

    分析Python中解析构建数据知识

    本篇文章给大家讲述一下Python中解析构建数据知识的相关内容,有需要的朋友跟着学习下。
    2018-01-01
  • 最新Python APScheduler 定时任务详解

    最新Python APScheduler 定时任务详解

    这篇文章主要介绍了Python使用apscheduler模块设置定时任务,APScheduler全称Advanced Python Scheduler 作用为在指定的时间规则执行指定的作业,本文对Python APScheduler 定时任务相关知识介绍的非常详细,需要的朋友参考下
    2022-05-05
  • 使用Pandas实现清洗客户编码异常数据

    使用Pandas实现清洗客户编码异常数据

    在不同行业中,我们经常会遇到一个麻烦的问题:数据清洗,尤其是当我们需要处理客户编码异常数据时,下面小编就来和大家分享一下常用的解决办法吧
    2023-07-07
  • Python基础之字典常见操作经典实例详解

    Python基础之字典常见操作经典实例详解

    这篇文章主要介绍了Python基础之字典常见操作,结合实例形式详细分析了Python基本功能、创建、内置函数与相关使用技巧,需要的朋友可以参考下
    2020-02-02
  • 在Python的struct模块中进行数据格式转换的方法

    在Python的struct模块中进行数据格式转换的方法

    这篇文章主要介绍了在Python的struct模块中进行数据格式转换的方法,文中还给出了C语言和Python语言的数据类型比较,需要的朋友可以参考下
    2015-06-06

最新评论