public int BinRankSearch(int Key)
        {
            int low = 0, high = R.Length- 1, mid;
            while (low <= high)
            {
                mid = (low + high) / 2;
                if (R.Data[mid].Rank == Key)
 
                    return mid;                if (Key<R.Data[mid].Rank)                     high= mid - 1;                else                    low = mid + 1;
            }
            return -1;
        }
上面的代码,我调试的时候,看到只要符合了return mid,就不会执行下面的事return -1,但是我想不通,为什么不会呢,这个应该总是返回-1的啊,while执行完了,就会执行下一条语句的啊

解决方案 »

  1.   

     return mid; 已有返回值,会直接退出函数
      

  2.   

    return 代表着一个方法的结束,遇到return方法就结束了,不再执行下面语句
      

  3.   

    if (R.Data[mid].Rank == Key)
     
                        return mid;                else if (Key<R.Data[mid].Rank)                     high= mid - 1;                else                    low = mid + 1;
      

  4.   

     public int BinRankSearch(int Key)
            {
                int low = 0, high = R.Length- 1, mid;
                if(low <= high)
                {
                    mid = (low + high) / 2;
                    if (R.Data[mid].Rank == Key)
     
                        return mid;               else if (Key<R.Data[mid].Rank)                     high= mid - 1;                else                    low = mid + 1;
                }
              else
                return -1;
            }
      

  5.   

    还有你试试LOW>height的情况吧!!!
      

  6.   

    return整个函数都跳出来了,就不管下面还有什么东西了~