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中map、any、all函数用法分析
Apr 21 Python
详解python发送各类邮件的主要方法
Dec 22 Python
Python正则表达式和元字符详解
Nov 29 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
对python 判断数字是否小于0的方法详解
Jan 26 Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 Python
Python + Flask 实现简单的验证码系统
Oct 01 Python
Django 批量插入数据的实现方法
Jan 12 Python
python机器学习库xgboost的使用
Jan 20 Python
Python %r和%s区别代码实例解析
Apr 03 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
May 28 Python
学python需要去培训机构吗
Jul 01 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/02/22 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
百度留言本js 大家可以参考下
2009/10/13 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
Vue关于组件化开发知识点详解
2020/05/13 Javascript
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
python机器学习之神经网络(二)
2017/12/20 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python版大富翁源代码分享
2018/11/19 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
公司门卫的岗位职责
2014/02/19 职场文书
投标承诺书怎么写
2014/05/24 职场文书
故宫英文导游词
2015/01/31 职场文书
关于倡议书的范文
2015/04/29 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
安全教育主题班会总结
2015/08/14 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
《将心比心》教学反思
2016/02/23 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers