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 ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
Python复制文件操作实例详解
Nov 10 Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
python 循环while和for in简单实例
Aug 16 Python
破解安装Pycharm的方法
Oct 19 Python
Python使用sqlalchemy模块连接数据库操作示例
Mar 13 Python
python如何读取bin文件并下发串口
Jul 05 Python
python绘制无向图度分布曲线示例
Nov 22 Python
TensorFlow-gpu和opencv安装详细教程
Jun 30 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 Python
python批量创建变量并赋值操作
Jun 03 Python
Python简易开发之制作计算器
Apr 28 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
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
js中function()使用方法
2013/12/24 Javascript
js实现二级导航功能
2017/03/03 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
vue element自定义表单验证请求后端接口验证
2019/12/11 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
python网络爬虫学习笔记(1)
2018/04/09 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
详细分析Python collections工具库
2020/07/16 Python
python中sys模块是做什么用的
2020/08/16 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
精神文明单位申报材料
2014/05/02 职场文书
副处级干部考察材料
2014/05/17 职场文书
党课培训心得体会
2014/09/02 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
医学会议开幕词
2016/03/03 职场文书
MySQL Server层四个日志的实现
2022/03/31 MySQL