猿问

如何在python中构建递归函数?

如何在python中构建递归函数?

如何在python中构建递归函数?



忽然笑
浏览 471回答 3
3回答

慕勒3428872

我想知道你是否意味着“递归”。以下是计算阶乘函数的递归函数的简单示例:def factorial(n):     if n == 0:         return 1     else:         return n * factorial(n - 1)递归算法的两个关键要素是:终止条件: n == 0减少步骤,函数每次调用自身的数字较小: factorial(n - 1)

慕妹3242003

Python中的递归就像其他语言中的递归一样,递归构造本身定义:例如,递归类可以是二叉树(或任何树):class&nbsp;tree(): &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''Initialise&nbsp;the&nbsp;tree''' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.Data&nbsp;=&nbsp;None &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.Count&nbsp;=&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.LeftSubtree&nbsp;=&nbsp;None &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.RightSubtree&nbsp;=&nbsp;None &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;Insert(self,&nbsp;data): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'''Add&nbsp;an&nbsp;item&nbsp;of&nbsp;data&nbsp;to&nbsp;the&nbsp;tree''' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;self.Data&nbsp;==&nbsp;None: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.Data&nbsp;=&nbsp;data &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.Count&nbsp;+=&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;data&nbsp;<&nbsp;self.Data: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;self.LeftSubtree&nbsp;==&nbsp;None: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;tree&nbsp;is&nbsp;a&nbsp;recurive&nbsp;class&nbsp;definition &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.LeftSubtree&nbsp;=&nbsp;tree() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Insert&nbsp;is&nbsp;a&nbsp;recursive&nbsp;function &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.LeftSubtree.Insert(data) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;data&nbsp;==&nbsp;self.Data: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.Count&nbsp;+=&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;data&nbsp;>&nbsp;self.Data: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;self.RightSubtree&nbsp;==&nbsp;None: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.RightSubtree&nbsp;=&nbsp;tree() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.RightSubtree.Insert(data)if&nbsp;__name__&nbsp;==&nbsp;'__main__': &nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;=&nbsp;tree() &nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;The&nbsp;root&nbsp;node &nbsp;&nbsp;&nbsp;&nbsp;T.Insert('b') &nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Will&nbsp;be&nbsp;put&nbsp;into&nbsp;the&nbsp;left&nbsp;subtree &nbsp;&nbsp;&nbsp;&nbsp;T.Insert('a') &nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Will&nbsp;be&nbsp;put&nbsp;into&nbsp;the&nbsp;right&nbsp;subtree &nbsp;&nbsp;&nbsp;&nbsp;T.Insert('c')如前所述,递归结构必须具有终止条件。在这个类中,它不是那么明显,因为它只会在添加新元素时进行递归,并且只会额外执行一次。另外值得注意的是,python默认情况下对可用的递归深度有限制,以避免吸收所有计算机的内存。在我的电脑上,这是1000.我不知道这是否会因硬件等而改变。看你的:import&nbsp;sys sys.getrecursionlimit()并设置它:import&nbsp;sys&nbsp;#(if&nbsp;you&nbsp;haven't&nbsp;already)sys.setrecursionlimit()编辑:我不能保证我的二叉树是有史以来最有效的设计。如果有人能改进它,我会很高兴听到如何
随时随地看视频慕课网APP

相关分类

Python
我要回答