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编程入门之Hello World的三种实现方式
Nov 13 Python
python如何查看系统网络流量的信息
Sep 12 Python
Python爬虫中urllib库的进阶学习
Jan 05 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
浅谈python下含中文字符串正则表达式的编码问题
Dec 07 Python
对python中的try、except、finally 执行顺序详解
Feb 18 Python
利用python-pypcap抓取带VLAN标签的数据包方法
Jul 23 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
打包PyQt5应用时的注意事项
Feb 14 Python
keras中的卷积层&amp;池化层的用法
May 22 Python
利用python+request通过接口实现人员通行记录上传功能
Jan 13 Python
Python爬虫之爬取最新更新的小说网站
May 06 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
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
php读取3389的脚本
2014/05/06 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
使用python实现扫描端口示例
2014/03/29 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
python函数不定长参数使用方法解析
2019/12/14 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
学习python需要有编程基础吗
2020/06/02 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
Python实现文件压缩和解压的示例代码
2020/08/12 Python
Python Django路径配置实现过程解析
2020/11/05 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
介绍一下Java中的Class类
2015/04/10 面试题
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
服装店员工管理制度
2015/08/07 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
asyncio异步编程之Task对象详解
2022/03/13 Python