A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 可见 中级黑马   /  2012-3-7 11:38  /  1553 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


我有返回值啊?问题在哪

7 个回复

倒序浏览
图片看不见...
回复 使用道具 举报
对啊,你缺少返回值,这是折半查找。
你在while(min<=max)这个循环外return -1;
意思就是当min>max时返回-1值。

百度贴吧的相册外链看不到,只要在该图右键属性获得url,浏览器上输入就能查看了
回复 使用道具 举报
他的代码是这样子的:
  1. public static int halfSearch_2(int arr,int key)
  2. {
  3.     int min=0,max=arr.length-1,mid;
  4. while(min<=max)
  5. {
  6.     mid=(min+max)>>1;
  7.     if(key>arr[mid])
  8.     min=mid+1;
  9.    else if(key<arr[mid])
  10.     max=mid-1;
  11.    else
  12.        return mid;
  13. }
  14. return -1 ; //你少这么一句,因为你声明了返回类型为int的方法。
  15. }
复制代码
回复 使用道具 举报
王亚男 发表于 2012-3-7 12:17
他的代码是这样子的:

再请问下 就是如果已经找到 返回return mid;
还要读return -1;这条语句不?为什么?
回复 使用道具 举报
本帖最后由 王亚男 于 2012-3-7 16:48 编辑
刘珂觐 发表于 2012-3-7 13:51
再请问下 就是如果已经找到 返回return mid;
还要读return -1;这条语句不?为什么?
...


那就不会了啊,因为你有循环条件while(min<=max),所以,只要符合这个条件就会折半查找,直到找到,最后return返回该值的脚标。但如果没有查找到的话,也就是min<=max条件不满足的话,就会跳到循环体外寻找return,结果没有,所以会提示你缺少返回值语句。
回复 使用道具 举报
王亚男 发表于 2012-3-7 16:41
那就不会了啊,因为你有循环条件while(min

即使查找到循环结束也要退出循环往下执行啊
回复 使用道具 举报
刘珂觐 发表于 2012-3-8 23:31
即使查找到循环结束也要退出循环往下执行啊


对啊,因为你的条件不满足啊。
条件满足就直接返回了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马