题目:有一个数组A[ ]={0,1,16,24,35,47,59,62,73,88,99} ,任意输入一个数k,用折半查找法找到k位于数组中的位置。如果k不属于数组A,显示错误提示。要求用递归的方法实现折半查找。
//递归方法实现折半查找
#include <stdio.h>
int BinarySearch(int data[],int key,int low,int high)
{
if(low>high)
return -1;
else
{
int mid = (low + high)/2;
if(key == data[mid])
return mid;
else if(key > data[mid])
BinarySearch(data,key,mid+1,high);
else
BinarySearch(data,key,low,mid-1);
}
}
int main()
{
int a[]={0,1,16,24,35,47,59,62,73,88,99};
int i;
int k;
int len;
int result;
len = sizeof(a)/sizeof(a[0]);
for(i=0;i<len;i++)
printf("%d ",a[i]);
printf("\n输入要查找的数:");
scanf("%d",&k);
result = BinarySearch(a,k,0,len-1);
if(result == -1)
printf("查找失败!\n");
else
printf("%d",result);
return 0;
}