全部问题 > 当前问题

老师,我这个程序为什么大于33输出的总是8呢,小于33输出的总是6呢?

#include <stdio.h>

int find(int x[],int t)

{

int left=0, mid, right=14;/* 数字为角标 */

while(left<=right)

{

mid = (left + right) / 2;/*对于奇数和偶数都适用*/

if(t==x[mid])

{

return mid;

}

else

{

if(t>x[mid])

{

return left = mid+1;

}

else

{

return right = mid-1;

}

}

}

return -1;

}

main()

{

int a[15]={3,7,12,19,21,24,26,33,39,41,45,50,52,64,68};

printf("%d\n", find(a, 41));

}


潮起潮落 2016-8-8 11:27:14

共 3 个回答

最佳答案

嘿嘿大人 2016-8-9 20:15:01

为何要加那么多return,一旦执行了return之后就会返回主函数的,把后面的那两个return去掉试一试

blob.png就是这两个

潮起潮落 2016-8-9 23:20:34

回复 嘿嘿大人:懂了,谢谢老师

嘿嘿大人 2016-8-10 23:38:49

回复 潮起潮落:不谢的,要学会思考,加油吧,嘿嘿

问题来自: 二分查找