二分查找

二分查找

https://img1.sycdn.imooc.com//climg/63fce14b0989f6fd11260720.jpg

https://img1.sycdn.imooc.com//climg/63fce14b09abce1e12020793.jpg

老师,请问一下我写得这个代码哪里有问题,我将导致栈溢出得这个测试用例代进去逻辑中去,可以推出结果,但是为什么这个地方会提示栈溢出呢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2023-02-28 07:27:30

什么叫“可以推出结果”?你是否实际在 IDE 中运行这个测试用例?


==========


比如 l = 0, r = 1;


mid = l + (r - l) / 2 = 0 + 1 / 2 = 0


新的 r 将等于 mid - 1 = -1


你的程序将调用 m(0, -1),致辞进入无限递归循环。(再跟一步,看看为什么是无限递归?)


继续加油!:)


  • 提问者 12_19 #1

    老师,您指出来的错误我明白了。我想表达的意思是,为什么测试用例那个会报错栈溢出。

    下面是我推导的逻辑,您看下是不是哪里有问题,还是说,代码其实并没有按照这个逻辑走。

    https://img1.sycdn.imooc.com//climg/63fda34808ea25e916001334.jpg

    2023-02-28 14:50:06
  • liuyubobobo 回复 提问者 12_19 #2

    第二步:r = mid - 1 = 3 - 1 = 2. 继续加油!:)

    2023-02-28 21:09:39
  • 提问者 12_19 回复 liuyubobobo #3

    嗷,我看成r-1了,,😂,谢谢老师(^^ゞ

    2023-02-28 21:28:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2589    人
  • 解答问题       1090    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师