python中的递归函数如何表示_如何在python中构建递归函数?

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值