在其声明中调用函数

时间:2016-11-19 01:55:28

标签: python python-3.x

我是OOP的新手,尤其是Python,并且无法理解以下代码。它用于HackeRank问题。我不知道如何在其声明中使用支票。它应该返回一个布尔值。

    def check(root,mini,maxi):
        return(root==None or
        (check(root.left,mini,root.data) and 
        check(root.right,root.data,maxi)))

2 个答案:

答案 0 :(得分:1)

您可以看到@ helptaker对递归的解释。在这种情况下,我假设该功能检查数据的左半部分和右半部分,除非它是空的。然后它将获取这些递归调用的结果并将它们组合起来。

因此,在您的示例中,基本情况将是root==None,这可能是数据变得足够小的时候。否则,此函数会调用两个较小的问题。这两个递归调用将返回其结果,函数将根据这些结果确定其返回值。

总之,这个功能可以将问题分解成越来越小的部分,并将每个部分解决,结合结果。

这里有一些关于递归的资源:

(如果您在Google上搜索"递归"它甚至会显示"您的意思是:递归"作为示例)

答案 1 :(得分:0)

在自身内部使用一个函数称为递归。当一个函数在其自身内被调用时,它再次调用自己进入它之前运行的调用。这个递归将每个递归函数调用推送到一个堆栈中并完成每个函数调用导致弹出函数调用,该函数调用位于堆栈顶部,恰好是对函数的最新调用。因此,在其内部调用wheck check,它将导致激活另一个要检查的调用,并且第二次调用返回的值将在调用它的调用中使用。根据程序的条件,可能会发生任意次数。我希望这有帮助。或者您可以阅读有关递归的信息。