用递归的方式实现二分查找c语言
1个回答
展开全部
#include <stdio.h>
int a[100]= {1,2,3,5,11,12,14,15,29,55}; //数组中的数(由小到大)
int k;//要找的数字
int found(int x,int y)
{ int m=x+(y-x)/2;
if(x>y)//查找完毕没有找到答案,返回-1
return -1;
else
{ if(a[m]==k) return m;//找到就返回位置.
else if(a[m]>k) return found(x,m-1);//找左边
else return found(m+1,y);//找右边
}
}
int main()
{ scanf("%d",&k);//输入要找的数字
printf("%d\n",found(0,9));//从数组a[0]到a[9]进行查找
return 0;
}
int a[100]= {1,2,3,5,11,12,14,15,29,55}; //数组中的数(由小到大)
int k;//要找的数字
int found(int x,int y)
{ int m=x+(y-x)/2;
if(x>y)//查找完毕没有找到答案,返回-1
return -1;
else
{ if(a[m]==k) return m;//找到就返回位置.
else if(a[m]>k) return found(x,m-1);//找左边
else return found(m+1,y);//找右边
}
}
int main()
{ scanf("%d",&k);//输入要找的数字
printf("%d\n",found(0,9));//从数组a[0]到a[9]进行查找
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询