Зацикливание в вызове функции - 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);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы