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 相关文章推荐
TensorFlow实现Batch Normalization
Mar 08 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
python爬取微信公众号文章的方法
Feb 26 Python
opencv3/C++图像像素操作详解
Dec 10 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 Python
Django CBV模型源码运行流程详解
Aug 17 Python
python speech模块的使用方法
Sep 09 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
python数据库批量插入数据的实现(executemany的使用)
Apr 30 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修改时间格式的代码
2011/05/29 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
PHP强制转化的形式整理
2020/05/22 PHP
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
关于react中组件通信的几种方式详解
2017/12/10 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python变量和字符串详解
2017/04/29 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
C语言50道问题
2014/10/23 面试题
Ruby如何定义一个类
2012/10/08 面试题
银行会计财务工作个人的自我评价
2013/10/29 职场文书
前台接待员岗位职责
2014/01/02 职场文书
会议接待欢迎标语
2014/10/08 职场文书
暑假安全保证书
2015/02/28 职场文书
好人好事新闻稿
2015/07/17 职场文书