Зацикливание в вызове функции - C#
Формулировка задачи:
Совсем недавно начала изучать язык С# и столкнулась с такой проблемой:
когда вызываю функцию, она работает правильно, находит нужный мне элемент, но почему-то вызывается еще раз и в итоге данные обнуляются т.е. доходя до оператора return функция не заканчивает свою работу.
Код момента вызова функции поиска (SearchElement):
Функция поиска:
private void button3_Click(object sender, EventArgs e)
{
Form1 newForm1 = this.Owner as Form1;
if (newForm1.perem.Root == null)
{
MessageBox.Show("Данных в базе нет");
}
else
{
Справочник_Автоинспектора.Form1.Node<int> elem;
elem = null;
elem=newForm1.perem.SearchElement(newForm1.perem.Root , Convert.ToInt32(maskedTextBox2.Text));
if (elem != null)
{
maskedTextBox4.Text = Convert.ToString(elem.power);
maskedTextBox3.Text = Convert.ToString(elem.year);
maskedTextBox5.Text = Convert.ToString(elem.mileage);
maskedTextBox1.Text = Convert.ToString(elem.date);
comboBox1.Text = Convert.ToString(elem.brand);
}
}
}public Node<T> SearchElement(Node<T> CurrentElem, int iscom)
{
Node<T> vozvrat=null;
if (CurrentElem==null)
{
MessageBox.Show("Элемента не существует в базе!");
vozvrat = null;
}
else if (Convert.ToInt32(CurrentElem.number) == iscom)
{
vozvrat = CurrentElem;
}
else if (Convert.ToInt32(CurrentElem.number) < iscom)
{
SearchElement(CurrentElem.left, iscom);
}
else if (Convert.ToInt32(CurrentElem.number) > iscom)
{
SearchElement(CurrentElem.right, iscom);
}
return (vozvrat);
}Решение задачи: «Зацикливание в вызове функции»
textual
Листинг программы
public Node<T> SearchElement(Node<T> CurrentElem, int iscom)
{
if (CurrentElem == null)
return null;
if (Convert.ToInt32(CurrentElem.number) == iscom)
return CurrentElem;
if (Convert.ToInt32(CurrentElem.number) < iscom)
return SearchElement(CurrentElem.left, iscom);
else
return SearchElement(CurrentElem.right, iscom);
}