我是递归概念的新手,在我的编码经验中从未练习过这种魔法。我对 Python 递归感到非常困惑的是“return”的使用。更具体地说,我不太明白在某些情况下何时使用 return。我见过在递归之前使用 return 的情况,并且根本不需要 case return。
例如:
一个 Leetcode 问题:“给定二叉搜索树(BST)的根节点和一个值。您需要在 BST 中找到该节点的值等于给定值的节点。返回以该节点为根的子树。如果这样的节点不存在,你应该返回NULL。”
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def searchBST(self, root, val):
"""
:type root: TreeNode
:type val: int
:rtype: TreeNode
"""
if root == None:
return root
if root.val == val:
return root
elif root.val > val:
return self.searchBST(root.left,val)
else:
return self.searchBST(root.right,val)
为什么我需要返回“self.searchBST(root.left,val)”和“self.searchBST(root.right,val)”?如果这两行都没有加return,程序是不是还要递归运行,直到满足root.val == val或者root== None的条件,并返回一个值?(我知道在实践中并非如此,我只是想将其概念化)。
此外,有人可以向我展示在递归中使用 return 的一般准则吗?先感谢您!
三国纷争
慕无忌1623718
慕尼黑5688855
相关分类