![](/img/trans.png)
[英]Why does an iterator in a recursive function point to the beginning after a return?
[英]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.