在C#中實現遞歸的二分查找可以通過編寫一個遞歸函數來實現。下面是一個使用遞歸方式實現二分查找的示例代碼:
using System;
class BinarySearch
{
public static int RecursiveBinarySearch(int[] array, int target, int min, int max)
{
if (min > max)
{
return -1;
}
int mid = (min + max) / 2;
if (array[mid] == target)
{
return mid;
}
else if (array[mid] < target)
{
return RecursiveBinarySearch(array, target, mid + 1, max);
}
else
{
return RecursiveBinarySearch(array, target, min, mid - 1);
}
}
static void Main()
{
int[] array = { 2, 5, 8, 12, 16, 23, 38, 56, 72, 91 };
int target = 23;
int result = RecursiveBinarySearch(array, target, 0, array.Length - 1);
if (result != -1)
{
Console.WriteLine("Element found at index: " + result);
}
else
{
Console.WriteLine("Element not found in the array");
}
}
}
在上面的示例代碼中,定義了一個RecursiveBinarySearch
函數來實現遞歸的二分查找。在函數中,首先判斷最小索引是否大于最大索引,如果是則返回-1表示未找到目標值。然后計算中間索引,如果中間值等于目標值,則返回中間索引,否則根據中間值與目標值的大小關系遞歸調用函數繼續查找左半部分或右半部分。在Main
函數中調用RecursiveBinarySearch
函數并輸出結果。