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 相关文章推荐
横向对比分析Python解析XML的四种方式
Mar 30 Python
Python subprocess模块详细解读
Jan 29 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
使用Keras实现Tensor的相乘和相加代码
Jun 18 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
Python 的 sum() Pythonic 的求和方法详细
Oct 16 Python
Python的property属性详细讲解
Apr 11 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
用libtemplate实现静态网页生成
2006/10/09 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
php中memcache 基本操作实例
2015/05/17 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
Javascript - HTML的request类
2006/07/15 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
Python自动抢红包教程详解
2019/06/11 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
linux比较文件内容的命令是什么
2013/03/04 面试题
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
医学专业毕业生个人求职信
2013/12/25 职场文书
致800米运动员广播稿
2014/02/16 职场文书
说明书范文
2014/05/07 职场文书
拆迁委托协议书
2014/09/15 职场文书
授权委托书
2015/01/28 职场文书
同意报考证明
2015/06/17 职场文书
企业文化学习心得体会
2016/01/21 职场文书