簡體   English   中英

這個具有兩種不同返回類型的遞歸函數是如何工作的?

[英]How does this recursive function with two different return types work?

下面的這個函數找到了到達二叉樹中指定節點的指令(“L”=左,“R”=右)。

 def find(n: TreeNode, val: int, path: List[str]) -> bool:
            if n.val == val:
                return True
            if n.left and find(n.left, val, path):
                path += "L"
            elif n.right and find(n.right, val, path):
                path += "R"
            return path

我看到基本情況返回True以完成循環,並告訴前面的遞歸調用它們所在的路徑最終將到達 val 節點,但我不明白return path在哪里適合所有這些。

  1. 在這個遞歸函數中如何返回兩種不同類型的對象( booleanList[str] )?
  2. 為什么我們要返回path呢? 刪除該行確實給了我錯誤的答案,但是我看不到任何將返回值設置為以某種方式使用的變量的地方。

A1。 “-> bool”稱為 Python 類型提示。 Python 類型提示在運行時不使用。 事實上,當您的程序運行時,您提供的所有類型信息都已被刪除。 換句話說,Python 不關心類型。 您可以從此處了解有關 Python 類型提示的更多信息。

A2-1。 path變量保存搜索路徑。 當頂層find中的path返回時,您將獲得完整的搜索路徑。

A2-2 如果沒有return ,Python 中的函數將返回None 例如:

def foo():
    print("hello")

foo 返回None ,與下面的 foo2 相同

def foo2():
    print("hello")
    return None

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM