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求两个list的差集、交集与并集的方法
Nov 01 Python
实例说明Python中比较运算符的使用
May 13 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
pytorch实现保证每次运行使用的随机数都相同
Feb 20 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
python中tab键是什么意思
Jun 18 Python
python二维图制作的实例代码
Dec 03 Python
Python编解码问题及文本文件处理方法详解
Jun 20 Python
Python中的程序流程控制语句
Feb 24 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
python字典多条件排序方法实例
2014/06/30 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
深入理解Python中的内置常量
2017/05/20 Python
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
CSS3控制HTML元素动画效果
2014/02/08 HTML / CSS
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
我的求职计划书
2014/01/10 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
鲁迅故居导游词
2015/02/05 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android