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远程登录代码
Apr 29 Python
提升Python程序运行效率的6个方法
Mar 31 Python
PYTHON基础-时间日期处理小结
May 05 Python
Django配置celery(非djcelery)执行异步任务和定时任务
Jul 16 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
Python类中self参数用法详解
Feb 13 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
python 弧度与角度互转实例
Apr 15 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
python RSA加密的示例
Dec 09 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
python切片作为占位符使用实例讲解
Feb 17 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与XML联手进行网站编程代码实例
2008/07/10 PHP
php入门教程 精简版
2009/12/13 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php备份数据库类分享
2015/04/14 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
javascript 短路法代码精简
2009/08/20 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
js实现漫天星星效果
2017/01/19 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
详细分析Python collections工具库
2020/07/16 Python
python实现代码审查自动回复消息
2021/02/01 Python
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
初级职称评定工作总结
2015/08/13 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
JavaScript流程控制(分支)
2021/12/06 Javascript
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL