qq_40833445 2017-11-29 11:09 采纳率: 0%
浏览 906

用递归进行二分法查找,求大神看一下哪边错了,调试了就停止运行

#include
int binary_search_recursive(int arr[], int left, int right, int query);

int main ()
{
int arr[10];
int left, right, query;
int i , res_r;

printf ("请输入数据:");
for (i = 0; i <= 9; i++)
scanf ("%d" , &arr[i]);

printf ("输入区间:");
scanf ("%d%d" , &left , &right);

printf ("输入要查找的数据:");
scanf ("%d" , &query);

res_r = binary_search_recursive(arr , left , right , query);

printf ("%d\n" , res_r);
return 0;

}
int binary_search_recursive(int arr[], int left, int right, int query)
{
int low = left , high = right , mid;
int flag = 0;

mid = (low + high) / 2;
if (low > high)
    flag = -1;
if (query == arr[mid])
    flag = 1;
if (arr[mid] > query)
    binary_search_recursive(arr , low , mid - 1 , query);
else
    binary_search_recursive(arr , mid + 1 , high , query);


if (flag == 1)
return mid;
if (flag == -1)
return -1;

}

  • 写回答

3条回答 默认 最新

  • Debug_dodge 2017-11-29 11:40
    关注

    low > high 应该直接返回了,你还在继续递归

    递归出口设计得有问题

    评论

报告相同问题?

悬赏问题

  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?