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 相关文章推荐
利用Psyco提升Python运行速度
Dec 24 Python
python之Socket网络编程详解
Sep 29 Python
Python端口扫描简单程序
Nov 10 Python
python生成器,可迭代对象,迭代器区别和联系
Feb 04 Python
Python3基于sax解析xml操作示例
May 22 Python
24式加速你的Python(小结)
Jun 13 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
Python pip 安装与使用(安装、更新、删除)
Oct 06 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 Python
django 实现简单的插入视频
Apr 07 Python
Python中glob库实现文件名的匹配
Jun 18 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利用反射实现插件机制的方法
2015/03/14 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
javascript生成大小写字母
2015/07/03 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
js实现下一页页码效果
2017/03/07 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
python去掉字符串中重复字符的方法
2014/02/27 Python
Python logging模块学习笔记
2014/05/24 Python
Python中的ceil()方法使用教程
2015/05/14 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
python xpath获取页面注释的方法
2019/01/14 Python
基于python使用tibco ems代码实例
2019/12/20 Python
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
最受欢迎的自我评价
2013/12/22 职场文书
平安校园建设方案
2014/05/02 职场文书
新党章心得体会
2014/09/04 职场文书
医德医风学习心得体会
2016/01/25 职场文书
股东协议书范本2016
2016/03/21 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android
Go语言编译原理之源码调试
2022/08/05 Golang