Мне нужно написать рекурсивную функцию, которая находит элемент в массиве, используя метод интерполяции.Предпочтительно оно должно быть основано на рекурсии.
Вот мой код:
static int? InterpolationSearch(int[] arr, int value, int left, int right)
{
if (arr[left] == value) return left;
else if (left == right || arr[left] == arr[right]) return null;
int index = left + (value - arr[left]) * (right - left) / (arr[right] - arr[left]);
if (arr[index] == value) return index;
else if (arr[left] < value) return InterpolationSearch(arr, value, index + 1, right);
else return InterpolationSearch(arr, value, left, index - 1);
}
При поиске в больших массивах (около 1000 элементов и более) выдается исключение StackOverflowException.
В чем проблема?