2
我一直在尝试使用递归(对我来说是新概念)整天在C.写一个二进制搜索我研究了很多与此想出了:递归二进制搜索/ C
int binary_search(int *parr, int value, int left, int right){
int middle = (left+right)/2;
if(*(parr+middle)==value){
return 1;
}
if(right<left){
return 0;
}
if(*(parr+middle)>value){
return binary_search(*parr, value, left, middle-1);
}
else{
return binary_search(*parr, value, middle+1, right);
}
}
这是我的主要功能:
int main()
{
int arr[maxbr],n, i, g;
do{
printf("\n n=");
scanf("%d", &n);
} while(n>maxbr);
for(i=0; i<n; i++){
printf("\n a[%d]", i);
scanf("%d", &arr[i]);
}
g = binary_search(arr, 5, 0, n-1);
printf(" %d", g);
}
由于某种原因,输入n和数组后,崩溃。先谢谢您的帮助!
什么是'maxbr'?您是否尝试过使用调试器来捕捉崩溃并查看它发生的位置? –
请阅读警告并采取行动。如果他们说你做错了什么,那你很可能会这样做。 –
我使用#define maxbr 100(例如)来定义数组可以具有的最大元素数量。 –