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的函数嵌套的使用方法
Jan 24 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
anaconda如何查看并管理python环境
Jul 05 Python
python实现在函数中修改变量值的方法
Jul 16 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
Python正则表达式急速入门(小结)
Dec 16 Python
python dataframe NaN处理方式
Dec 26 Python
keras模型可视化,层可视化及kernel可视化实例
Jan 24 Python
TFRecord文件查看包含的所有Features代码
Feb 17 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 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
提取HTML标签
2006/10/09 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
详解python内置模块urllib
2020/09/09 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
会计专业毕业生推荐信
2013/11/05 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
个人违纪检讨书
2014/09/15 职场文书
离职报告格式
2014/11/04 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript