You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非void函数未在所有控制路径返回值错误求助

问题排查与解决

错误Non-void function does not return a value in all control paths的核心原因是:你的search函数声明为返回int类型,但存在两个控制路径(递归查找左、右子树的分支)没有返回值。

看你的代码,在else if(key < temp -> data)和else分支里,你只是调用了递归的search函数,但没有将递归调用的结果返回给上层调用者。编译器会认为这两个分支执行完后没有返回任何值,违反了非void函数必须在所有路径返回值的规则。

修复方案

在这两个递归调用前加上return关键字,把递归查找的结果返回出去,确保所有控制路径都有返回值。

修正后的代码:

int search(int key, struct node *temp)
{
      if(temp == NULL)
          return 0;
      else if(temp -> data == key)
          return 1;
      else if(key < temp -> data)
          return search(key,temp -> left); // 添加return返回递归结果
      else
          return search(key,temp -> right); // 添加return返回递归结果
}

这样修改后,每个分支都会明确返回一个int值,编译器的错误提示就会消失,同时递归逻辑也能正确将底层的查找结果传递回初始调用处。

内容的提问来源于stack exchange,提问作者Vi.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:43:10