如何摆脱递归?C编程 [英] How to break out of recursion? C Programming

查看:35
本文介绍了如何摆脱递归?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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆