C语言 “非空函数未在所有控制路径中返回值”错误

iovurdzv  于 2023-03-17  发布在  其他
关注(0)|答案(1)|浏览(172)

每当我使用int向main返回多个值时,我都会收到这个错误。

int search(int key, struct node *temp)
{
      if(temp == NULL)
      return 0;
      else if(temp -> data == key)
      return 1;
      else if(key < temp -> data)
      search(key,temp -> left);
      else
      search(key,temp -> right);
}
ee7vknir

ee7vknir1#

从所有路径返回一些东西。简单调用search()不会导致它的返回值从search()内部返回。

int search(int key, const struct node *temp) {
  if (temp == NULL) return 0;
  if (temp->data == key) return 1;
  if (key < temp->data) return search(key, temp->left); // return added. 
  return search(key, temp->right);                      // return added.
}

还有:

  • 删除了不需要的else
  • 使用const struct node *temp,因为temp引用的数据从未更改。
  • 存在其他简化。

相关问题