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中nan与inf转为特定数字方法示例
May 11 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
Java与Python两大幸存者谁更胜一筹呢
Apr 12 Python
利用pandas读取中文数据集的方法
Jul 25 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
python爬取王者荣耀全皮肤的简单实现代码
Jan 31 Python
如何基于Python按行合并两个txt
Nov 03 Python
用python对oracle进行简单性能测试
Dec 05 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
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
PHP编写RESTful接口
2016/02/23 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
jQuery实现日历效果
2020/09/11 jQuery
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
Python numpy数组转置与轴变换
2019/11/15 Python
python实现的Iou与Giou代码
2020/01/18 Python
QML用PathView实现轮播图
2020/06/03 Python
如何利用Python 进行边缘检测
2020/10/14 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
ORACLE第二个十问
2013/12/14 面试题
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
python中pandas对多列进行分组统计的实现
2021/06/18 Python
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
MySQL sql模式设置引起的问题
2022/05/15 MySQL