【问题标题】:Python not defined recursive function?Python没有定义递归函数?
【发布时间】:2016-04-07 22:37:53
【问题描述】:

我正在 Python 3.5.0 中制作二叉树,并为其制作插入函数。但是当我在内部调用tree_insert 时遇到了一些问题,它给了我这个错误:

文件“D:/MadeUpPath/BinaryTree.py”,第 10 行,在 tree_insert 中

tree_insert(data, self.left)

NameError:名称“tree_insert”未定义

class BinaryTree():
    def __init__(self, data):
        self.left = None
        self.right = None
        self.data = data

    def tree_insert(self, data):
        if (data < self.data):
            if (self.left != None):
                tree_insert(data, self.left)
            else:
                self.left = BinaryTree(data)
        else:
            if (self.right != None):
                tree_insert(data, self.right)
            else:
                self.right = BinaryTree(data)

经过进一步测试,我发现递归函数根本不起作用。我尝试了以下代码来确定,但给了我同样的错误:

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

文件“D:/MadeUpPath/BinaryTree.py”,第 23 行,阶乘

返回 n * 阶乘(n - 1)

NameError: 名称“阶乘”未定义

如果有人能指出我正确的方向,将不胜感激:)

【问题讨论】:

    标签: python-3.x pycharm


    【解决方案1】:

    tree_insert() 是一个instance method,通过self.tree_insert() 调用它:

    class BinaryTree():
        def __init__(self, data):
            self.left = None
            self.right = None
            self.data = data
    
        def tree_insert(self, data):
            if (data < self.data):
                if (self.left != None):
                    self.tree_insert(data, self.left)
                else:
                    self.left = BinaryTree(data)
            else:
                if (self.right != None):
                    self.tree_insert(data, self.right)
                else:
                    self.right = BinaryTree(data)
    

    【讨论】:

      猜你喜欢
      • 2017-07-10
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 2023-04-01
      • 2019-07-15
      • 2021-05-17
      • 2014-07-11
      相关资源
      最近更新 更多