我正在尝试在排序和旋转数组中查找枢轴元素,该元素返回返回给定stackoverflow错误。
下面是代码:
int findPivot(int[] arr,int lo, int hi) {
int mid = lo +(hi-lo)/2;
if(arr[mid]>arr[mid+1]) {
return mid;
}
else if (arr[mid]<arr[hi]) {
return findPivot(arr,lo,mid-1);
}else {
return findPivot(arr,mid+1,hi);
}
}
我该如何解决这个问题?
答案 0 :(得分:0)
您缺少基本条件。
int findPivot(int arr[], int low, int high)
{
// base cases
if (high < low) return -1;
if (high == low) return low;
int mid = (low + high)/2; /*low + (high - low)/2;*/
if (mid < high && arr[mid] > arr[mid + 1])
return mid;
if (mid > low && arr[mid] < arr[mid - 1])
return (mid-1);
if (arr[low] >= arr[mid])
return findPivot(arr, low, mid-1);
return findPivot(arr, mid + 1, high);
}