关于return ERROR和return OK 作用的问题

yimingxinshou 2011-12-21 05:40:07
例如下边的函数:
int PreOrderTraverse(BiTree T,int (*visit)(int e))
{
if(T)
{
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if(PreOrderTraverse(T->rchild,Visit))
return OK;
return ERROR;
}
else
return OK;
}
这里边的return语句都是什么作用?我记得return ERROR可以终止程序,他是终止整个递归,还是只终止其中的某一次递归调用?还是都不是啊?麻烦知道的指教一下这里边return OK 和 return ERROR的作用
...全文
5405 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
TechStone 2011-12-21
  • 打赏
  • 举报
回复
更正一下,return ERROR是在visit或者PreOrderTraverse出错的情况下向上一层报错。
TechStone 2011-12-21
  • 打赏
  • 举报
回复
int PreOrderTraverse(BiTree T,int (*visit)(int e))
{
if(T)
{
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if(PreOrderTraverse(T->rchild,Visit))
return OK;
return ERROR;
}
else
return OK;
}


return只是退出本函数,在这里就是退出一次递归调用。return OK在这里是告诉上层本结点已经按先序遍历完成,return ERROR是在Visit(T->data)出错的时候返回错误。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧