主页 > 其他  > 

python之递归

python之递归

文章目录

前言一、递归是什么?二、递归用在哪些方面三、递归的思想总结


前言

结合网上的示例,自己总结一下递归。


一、递归是什么?

在讲解“递归”这个抽象概念之前,让我们来重温一下昔日往事。小时候,当我们在缠着长辈讲故事时,长辈们可能就用下面的故事来“忽悠”我们:

从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事!故事是什么呢?从前有座山,山里有座庙,庙里有个老和尚正在给小和尚讲故事!故事是什么呢……

除非讲故事的人自己停下来不讲了,不然这个故事可以“无限”讲下去,原因就是“故事”嵌套的“故事”就是“故事”本身,这就是语言上“递归”的例子。但是,由于这个故事并没有一个终止的条件,因此,它实际上是陷入了一种有头无尾的死循环,因此并不符合程序设计领域中定义的“递归”。

 那么在Python中递归就是一个函数内部可以自己调用自己(包括直接调用自己,间接调用自己)。

二、递归用在哪些方面

1、数学计算

在数学计算中,最常见的就是求阶乘。例如:5!=5*4*3*2*1

2、处理字符串

在字符串中常见的就是用于查找字符串

三、递归的思想

递归其实是一种逆向思维,就如同我要证明10>1,但是我现在证明不了,那我就证明2>1,这样就反向证明了10>1。

递归也会通过调用不断地把问题缩小,直到遇到一个简单的可以直接解决的基准情况。核心思想就是把一个大的问题,逐步的划成一个小范围,再从这个小范围里面,又继续划一个小范围。直到逼近最适合的答案。

举例: 1. 在列表中查找元素

假设我们要在一个列表中查找一个特定的元素,可以使用递归:

# 函数说明,lst是一个装有元素的列表,target是目标元素 def recursive_search(lst, target, index=0): # 基本情况:如果索引超出列表长度,则返回None if index == len(lst): return None # 检查当前元素是否为目标元素 if lst[index] == target: return index # 递归调用,继续在列表的下一个元素中查找 return recursive_search(lst, target, index + 1) # 示例 lst = [1, 2, 3, 4, 5] target = 3 print(recursive_search(lst, target)) # 输出: 2 2. 在二叉树中查找元素

在二叉树中查找一个元素,也可以使用递归:

# 示例二叉树结构 #       4 #      / \ #     2   6 #    / \ #   1   3

class TreeNode: def __init__(self, value=0, left=None, right=None): self.value = value self.left = left self.right = right def search_in_bst(root, target): # 基本情况:如果树为空,返回None if root is None: return None # 检查当前节点值是否为目标值 if root.value == target: return root # 如果目标值小于当前节点值,递归在左子树中查找 elif target < root.value: return search_in_bst(root.left, target) # 如果目标值大于当前节点值,递归在右子树中查找 else: return search_in_bst(root.right, target) # 示例二叉树结构 # 4 # / \ # 2 6 # / \ # 1 3 root = TreeNode(4, left=TreeNode(2, left=TreeNode(1), right=TreeNode(3)), right=TreeNode(value=6, left=None, right=None)) print(search_in_bst(root, 4).value) # 输出: 3

额外知识:

类的参数中的值,可以传入自己类的初始化参数。

引用文档: zhuanlan.zhihu /p/158300209

百度安全验证

百度安全验证


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

标签:

python之递归由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“python之递归