为什么在使用递归调用时要使用 return 语句?

0 c sorting

在下面的二分查找函数返回整数类型的值中,为什么我们要在递归调用时在 else if 语句中使用返回值?如果我直接使用递归调用而不是作为回报使用它,代码将不起作用。

int binarysearch(int l,int h,int key)
{
  int mid;
  mid=(l+h)/2;
  if(l<=h)                             
  {
    if(key==a[mid])
      return mid;
    else if(key>a[mid])
      return(binarysearch(mid+1,h,key));
    else if(key<a[mid])
      return(binarysearch(l,mid-1,key));
  }
  else
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 5

虽然它的返回值是 类型int,但函数必须返回一个值。它返回的每个地方都必须返回一个值。当当前函数调用的递归调用返回时,它会给你答案;您必须将该答案返回给调用上下文——递归链的下一级或原始调用者。

如果您不返回值,则会调用未定义的行为,这是一件坏事!™