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文件操作类操作实例详解
Jul 11 Python
编程语言Python的发展史
Sep 26 Python
跟老齐学Python之让人欢喜让人忧的迭代
Oct 02 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
python Pygame的具体使用讲解
Nov 03 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
python框架中flask知识点总结
Aug 17 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
python 字典item与iteritems的区别详解
Apr 25 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
Nov 17 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中动态显示签名和ip原理
2007/03/28 PHP
php仿discuz分页效果代码
2008/10/02 PHP
初识Laravel
2014/10/30 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
使用Python读取大文件的方法
2018/02/11 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
保护环境建议书100字
2014/05/13 职场文书
开学典礼演讲稿
2014/05/23 职场文书
赔偿协议书
2015/01/27 职场文书
入党群众意见范文
2015/06/02 职场文书
中学政教处工作总结
2015/08/13 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android