Зацикливание в вызове функции - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д