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之模拟鼠标键盘动作具体实现
Dec 30 Python
在Django的视图(View)外使用Session的方法
Jul 23 Python
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
python进行TCP端口扫描的实现
Dec 21 Python
python函数的作用域及关键字详解
Aug 20 Python
Django 实现xadmin后台菜单改为中文
Nov 15 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
python实现PDF中表格转化为Excel的方法
Jun 16 Python
python实现取余操作的简单实例
Aug 16 Python
详解Python模块化编程与装饰器
Jan 16 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 21 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中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
Python实现批量下载图片的方法
2015/07/08 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
python 线程的五个状态
2020/09/22 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
自我评价的写作规则
2014/01/06 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
学校实习推荐信
2015/03/27 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL