用二分法解题时,mid上下取值正确与否关系程序是否进入死循环!!
对与if(test(mid)) l=mid;
else r=mid-1; 如果用 mid=(l+r)/2 会出现问题!!! 取l=3,r=4,会发现程序死循环!!!得用 mid=l+(r-l+1)/2;
对于if(test(mid)) r=mid;
else l=mid+1; 显然得用mid=(l+r)/2
两种方式一个向上,一个向下取整,具体问题具体分析!!
用二分法解题时,mid上下取值正确与否关系程序是否进入死循环!!
对与if(test(mid)) l=mid;
else r=mid-1; 如果用 mid=(l+r)/2 会出现问题!!! 取l=3,r=4,会发现程序死循环!!!得用 mid=l+(r-l+1)/2;
对于if(test(mid)) r=mid;
else l=mid+1; 显然得用mid=(l+r)/2
两种方式一个向上,一个向下取整,具体问题具体分析!!