如何在python中构建递归函数?如何在python中构建递归函数?
3 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
我想知道你是否意味着“递归”。以下是计算阶乘函数的递归函数的简单示例:
def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1)
递归算法的两个关键要素是:
终止条件:
n == 0减少步骤,函数每次调用自身的数字较小:
factorial(n - 1)
慕妹3242003
TA贡献1824条经验 获得超6个赞
Python中的递归就像其他语言中的递归一样,递归构造本身定义:
例如,递归类可以是二叉树(或任何树):
class tree():
def __init__(self):
'''Initialise the tree'''
self.Data = None
self.Count = 0
self.LeftSubtree = None
self.RightSubtree = None
def Insert(self, data):
'''Add an item of data to the tree'''
if self.Data == None:
self.Data = data
self.Count += 1
elif data < self.Data:
if self.LeftSubtree == None:
# tree is a recurive class definition
self.LeftSubtree = tree()
# Insert is a recursive function
self.LeftSubtree.Insert(data)
elif data == self.Data:
self.Count += 1
elif data > self.Data:
if self.RightSubtree == None:
self.RightSubtree = tree()
self.RightSubtree.Insert(data)if __name__ == '__main__':
T = tree()
# The root node
T.Insert('b')
# Will be put into the left subtree
T.Insert('a')
# Will be put into the right subtree
T.Insert('c')如前所述,递归结构必须具有终止条件。在这个类中,它不是那么明显,因为它只会在添加新元素时进行递归,并且只会额外执行一次。
另外值得注意的是,python默认情况下对可用的递归深度有限制,以避免吸收所有计算机的内存。在我的电脑上,这是1000.我不知道这是否会因硬件等而改变。看你的:
import sys sys.getrecursionlimit()
并设置它:
import sys #(if you haven't already)sys.setrecursionlimit()
编辑:我不能保证我的二叉树是有史以来最有效的设计。如果有人能改进它,我会很高兴听到如何
添加回答
举报
0/150
提交
取消
