Python递归函数特点及原理解析


Posted in Python onMarch 04, 2020

1 递归函数的特点

特点

一个函数 内部 调用自己

函数内部可以调用其他函数,当然在函数内部也可以调用自己

代码特点

函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同

当 参数满足一个条件 时,函数不再执行

这个非常重要,通常被称为递归的出口,否则 会出现死循环!

示例代码

def sum_numbers(num):
  print(num)
  # 递归的出口很重要,否则会出现死循环
  if num == 1:
    return
  sum_numbers(num - 1)
sum_numbers(3)

Python递归函数特点及原理解析

2 递归案例 —— 计算数字累加

需求

定义一个函数 sum_numbers

能够接收一个 num 的整数参数

计算 1 + 2 + ... num 的结果

def sum_numbers(num):
​  if num == 1:
    return 1
    # 假设 sum_numbers 能够完成 num - 1 的累加
  temp = sum_numbers(num - 1)
​  # 函数内部的核心算法就是 两个数字的相加
  return num + temp
​print(sum_numbers(2))

Python递归函数特点及原理解析

#  
# 练习
#  创建一个函数,用来检查一个任意的字符串是否是回文字符串,如果是返回True,否则返回False
#  回文字符串,字符串从前往后念和从后往前念是一样的
#    abcba
#  abcdefgfedcba
#  先检查第一个字符和最后一个字符是否一致,如果不一致则不是回文字符串
#    如果一致,则看剩余的部分是否是回文字符串
#  检查 abcdefgfedcba 是不是回文
#  检查 bcdefgfedcb 是不是回文
#  检查 cdefgfedc 是不是回文
#  检查 defgfed 是不是回文
#  检查 efgfe 是不是回文
#  检查 fgf 是不是回文
#  检查 g 是不是回文

def hui_wen(s):
  '''
    该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False

    参数:
      s:就是要检查的字符串
  '''
  # 基线条件
  if len(s) < 2:
    # 字符串的长度小于2,则字符串一定是回文
    return True
  elif s[0] != s[-1]:
    # 第一个字符和最后一个字符不相等,不是回文字符串
    return False
    # 递归条件  
  return hui_wen(s[1:-1])

print(hui_wen('abcdefgfedcba'))

Python递归函数特点及原理解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
jupyter安装小结
Mar 13 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
python将文本中的空格替换为换行的方法
Mar 19 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
python实现beta分布概率密度函数的方法
Jul 08 Python
简单了解python gevent 协程使用及作用
Jul 22 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
教你使用Python获取QQ音乐某个歌手的歌单
Apr 03 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 #Python
python实现简单井字棋游戏
Mar 04 #Python
pycharm中import呈现灰色原因的解决方法
Mar 04 #Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 #Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 #Python
使用Python发现隐藏的wifi
Mar 04 #Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 #Python
You might like
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
jstree的简单实例
2016/12/01 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
python算法学习之计数排序实例
2013/12/18 Python
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
python requests证书问题解决
2019/09/05 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
Tostadora意大利:定制T恤
2019/04/08 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
自考自我鉴定范文
2013/10/30 职场文书
外语学院毕业生的自我鉴定
2013/11/28 职场文书
代理商会议邀请函
2014/01/27 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python