为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

忽然笑 2019-08-27 16:39:22
如何在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)


查看完整回答
反对 回复 2019-08-27
?
慕妹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()

编辑:我不能保证我的二叉树是有史以来最有效的设计。如果有人能改进它,我会很高兴听到如何


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 470 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信