簡體   English   中英

遞歸 Function 返回后繼續

[英]Recursive Function Continuing After Return

編輯:以下問題已解決。 但是,我有一個后續問題。 有時我的教授在進行遞歸調用時沒有返回。 我怎么知道什么時候應該返回遞歸調用,什么時候應該遞歸調用 function?

我正在編寫遞歸 function 來查看二叉搜索樹是否包含某個鍵。 打印出短語“Key Match Contains”,因此找到了密鑰,但 function 仍然返回 false。 我注意到每當搜索左子樹時它都會返回 false 。 關於出了什么問題的任何想法? 先感謝您。

內部方法:

template <typename K>
bool Multiset<K>::Contains(std::unique_ptr<Node> &n, const K &key) {
  if (!n) {
    std::cout << "Contains returns null" << std::endl;
    return false;
  }

  if (n->key == key) {
    std::cout << "Key match Contains" << std::endl;
    return true;
  } else if (key < n->key) {
    Contains(n->left, key);
  }
  return Contains(n->right, key);
}

外部方法:

template <typename K>
bool Multiset<K>::Contains(const K &key) {
  return Contains(root, key);
}

您正在刪除部分中的搜索結果:

    Contains(n->left, key);

例如,它應該是這樣的:

    if (Contains(n->left, key)) return true;

你需要把return Contains(n->left, key); 不只是Contains(n->left, key);

暫無
暫無

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

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