Приведенный ниже код относится к алгоритму бинарного поиска. Пользователь вводит числа в textbox1 и вводит число, которое он хочет найти с помощью бинарного поиска в textbox2. теперь у меня проблема с этим, я хочу, чтобы при изменении значения mid,first,last он снова запускал функцию. Я имею в виду, например: когда last=mid-1; функция начинается снова и вычисляется с новым значением last (я прокомментировал коды для получения дополнительных пояснений) спасибо
private void button1_Click(object sender, EventArgs e)
{
string strsearchnums = textBox2.Text;
int result = binarysearch(strsearchnums);
textBox14.Text = result.ToString();
}
public int binarysearch(string strsearchnum)
{
string[] source = textBox1.Text.Split(',');
int[] nums = new int[source.Length];
for (int i = 0; i < source.Length; i++)
{
nums[i] = Convert.ToInt32(source[i]);
}
int searchnum = Convert.ToInt32(strsearchnum);
int first = nums.First();
int last = nums.Last();
while (1 <= nums.Length - 1)
{
int mid = (int)Math.Floor(nums.Length / 2.0) - 1;
if (nums[0]> nums[nums.Length-1])
{
break;
}
if (searchnum < nums[mid])
{
last = mid - 1;
binarysearch(strsearchnum); ///i thought i should do like this but this isnt correct it becomes stackoverflow
}
if (searchnum > nums[mid])
{
first = mid + 1;
binarysearch(strsearchnum); ///i thought i should do like this but this isnt correct it becomes stackoverflow
}
if (searchnum == nums[mid])
{
return nums[mid];
}
}
return -1;
}