Python递归函数特点及原理解析

所属分类: 脚本专栏 / python 阅读数: 1519
收藏 0 赞 0 分享

1 递归函数的特点

特点

一个函数 内部 调用自己

函数内部可以调用其他函数,当然在函数内部也可以调用自己

代码特点

函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同

当 参数满足一个条件 时,函数不再执行

这个非常重要,通常被称为递归的出口,否则 会出现死循环!

示例代码

def sum_numbers(num):
  print(num)
  # 递归的出口很重要,否则会出现死循环
  if num == 1:
    return
  sum_numbers(num - 1)
sum_numbers(3)

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))

#  
# 练习
#  创建一个函数,用来检查一个任意的字符串是否是回文字符串,如果是返回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写了一个股票提醒系统,迷你版量化系统,完美的实现了实时提醒功能,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Python绘制的二项分布概率图示例

这篇文章主要介绍了Python绘制的二项分布概率图,涉及Python基于numpy、math的数值运算及matplotlib图形绘制相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Python Learning 列表的更多操作及示例代码

这篇文章主要介绍了Python Learning-列表的更多操作,需要的朋友可以参考下
收藏 0 赞 0 分享

关于python列表增加元素的三种操作方法

这篇文章主要介绍了关于python列表增加元素的几种操作方法,主要有insert方法,extend方法和append方法,每种方法给大家介绍的非常详细,需要的朋友可以参考下
收藏 0 赞 0 分享

如何在python字符串中输入纯粹的{}

这篇文章主要介绍了如何在python字符串中输入纯粹的{}以及python字符串连接的三种方法,需要的朋友可以参考下
收藏 0 赞 0 分享

浅谈Django的缓存机制

这篇文章主要介绍了浅谈Django的缓存机制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Django 限制用户访问频率的中间件的实现

这篇文章主要介绍了Django 限制用户访问频率的中间件的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

示例详解Python3 or Python2 两者之间的差异

这篇文章主要介绍了Python3 or Python2?示例详解两者之间的差异,在本文中给大家介绍的非常详细,需要的朋友可以参考下
收藏 0 赞 0 分享

Python wxpython模块响应鼠标拖动事件操作示例

这篇文章主要介绍了Python wxpython模块响应鼠标拖动事件操作,结合实例形式分析了Python使用wxpython模块创建窗口、绑定事件及相应鼠标事件相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

使用Python实现一个栈判断括号是否平衡

栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top)。这篇文章主要介绍了使用Python实现一个栈判断括号是否平衡,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多