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 从远程服务器下载日志文件的程序
Feb 10 Python
python通过zlib实现压缩与解压字符串的方法
Nov 19 Python
常用python编程模板汇总
Feb 12 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
Python实现把类当做字典来访问
Dec 16 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
Java多线程实现四种方式原理详解
Jun 02 Python
python三引号如何输入
Jul 06 Python
Python发送邮件实现基础解析
Aug 14 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
js实现导航跟随效果
2018/11/17 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
2020/07/21 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python字符串格式化方式解析
2019/10/19 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
python中类与对象之间的关系详解
2020/12/16 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
提拔干部考察材料
2014/05/26 职场文书
战马观后感
2015/06/08 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
浅谈Redis缓冲区机制
2022/06/05 Redis