如何摆脱递归?C编程 [英] How to break out of recursion? C Programming
本文介绍了如何摆脱递归?C编程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个三叉树,每个节点都有 id 和 name当 root->id=id 时如何返回 true并打破递归
I have a trenary tree every node got id and name how can I return true when root->id=id and break the recursion
BOOLEAN isIdUsed(Trin_Ari *root,int idNumber) {
if (root==NULL)
return FALSE;
if (root->id==idNumber)
return TRUE;
isIdUsed(root->left,idNumber);
isIdUsed(root->middle,idNumber);
isIdUsed(root->right,idNumber);
return FALSE;
}
推荐答案
您忽略了对 isIdUsed
的递归调用的返回值.一旦你在那里遇到 TRUE
,你需要向上传播它:
You're ignoring the return values from the recursive calls to isIdUsed
. Once you encounter a TRUE
there, you need to propagate it upwards:
BOOLEAN isIdUsed(Trin_Ari *root,int idNumber) {
if (root==NULL)
return FALSE;
if (root->id==idNumber)
return TRUE;
if (isIdUsed(root->left,idNumber))
return TRUE;
if (isIdUsed(root->middle,idNumber))
return TRUE;
if (isIdUsed(root->right,idNumber))
return TRUE;
return FALSE;
}
这篇关于如何摆脱递归?C编程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文