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 12 Python
Python3中多线程编程的队列运作示例
Apr 16 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
利用Python校准本地时间的方法教程
Oct 31 Python
布隆过滤器的概述及Python实现方法
Dec 08 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
Python 如何定义匿名或内联函数
Aug 01 Python
利用Python实现Picgo图床工具
Nov 23 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
openPNE常用方法分享
2011/11/29 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
php中JSON的使用与转换
2015/01/14 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
屏蔽script注入小例子
2013/11/12 Javascript
Javascript Objects详解
2014/09/04 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
理解javascript封装
2016/02/23 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
Python实现的概率分布运算操作示例
2017/08/14 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
中学生自我评价范文
2014/02/08 职场文书
合作协议书怎么写
2014/04/18 职场文书
小学生评语集锦
2014/04/18 职场文书
司法所长先进事迹
2014/06/02 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers
使用Django框架创建项目
2022/06/10 Python