返回语句未执行

时间:2013-04-05 15:34:53

标签: python

所以我编写了一个代码,它应该在树中获取给定节点的父代。这是伪代码。从根开始,

def parent(self, child): 
    if right child exists:
        if the right child == child:
            return self
        else: self.right.parent(child)
    if left child exists:
        if the left child == child:
            print('f')
            return self
        else: self.left._get_parent(node)

我一遍又一遍地遇到这个问题。 对于if the left child == child:语句,如果函数找到ifthe left child == child,则会输入the right child == child语句。

但是,return语句不会执行此操作。我知道这一点是因为当我写if the left child == child:并在其后写print('f')时,它确实打印了f,但是它没有返回self。有谁知道为什么,任何人都可以解决如何解决这个问题?

此外,有没有人知道如何一次返回两个语句而不是元组或列表? 例如,如果我想返回1和2,

def x(n):
    return 1, 2

这将返回(1, 2) ..有没有办法让它不作为元组返回?只是为了正常返回它。我问这个是因为当涉及到递归时,我想在1 AS WELL AS 2上调用相同的函数,而不是在元组(1, 2)上调用。

1 个答案:

答案 0 :(得分:2)

您的代码丢弃 else:分支中递归调用的返回值。您需要更多return语句:

if right child exists:
    if the right child == child:
        return self
    else: 
        return self.right.parent(child)
if left child exists:
    if the left child == child:
        print('f')
        return self
    else:
        return self.left._get_parent(node)

在Python中,表达式1, 2创建一个元组,这是从函数返回多个值的规范方式。这就是通过返回一个元组,多个值返回的工作方式。

只需解压缩返回的值:

def foo():
   return 1, 2

value1, value2 = foo()

或使用索引:

values = foo()
values[0], values[1]