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高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
Python随机函数库random的使用方法详解
Aug 21 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
详解基于python的图像Gabor变换及特征提取
Oct 26 Python
Python 中random 库的详细使用
Jun 03 Python
一篇文章弄懂Python中的内建函数
Aug 07 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简单实现查询数据库返回json数据
2015/04/16 PHP
PHP反射学习入门示例
2019/06/14 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
javascript对中文按照拼音排序代码
2014/08/20 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
JavaScript面试题大全(推荐)
2016/09/22 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
在Python中COM口的调用方法
2019/07/03 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
上班睡觉检讨书
2014/01/09 职场文书
开学典礼感言
2014/02/16 职场文书
《雷雨》教学反思
2014/02/20 职场文书
怀念母亲教学反思
2014/04/28 职场文书
森林防火标语
2014/06/23 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
股东出资协议书
2016/03/21 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL