Python没有定义递归函数?

时间:2016-04-07 22:37:53

标签: python-3.x pycharm

我在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行,在factorial中

     

返回n * factorial(n - 1)

     

NameError:名称'factorial'未定义

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

1 个答案:

答案 0 :(得分:6)

{'a': [[{'InstanceID': u'BIOS.Setup.1-1:Slot3'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot4'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot2'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot5'}], [{'InstanceID': u'BIOS.Setup.1-1:Slot1'}]]} instance method ,通过tree_insert()调用:

self.tree_insert()