Зацикливание в вызове функции - C#

Узнай цену своей работы

Формулировка задачи:

Совсем недавно начала изучать язык С# и столкнулась с такой проблемой: когда вызываю функцию, она работает правильно, находит нужный мне элемент, но почему-то вызывается еще раз и в итоге данные обнуляются т.е. доходя до оператора return функция не заканчивает свою работу. Код момента вызова функции поиска (SearchElement):
Листинг программы
  1. private void button3_Click(object sender, EventArgs e)
  2. {
  3. Form1 newForm1 = this.Owner as Form1;
  4. if (newForm1.perem.Root == null)
  5. {
  6. MessageBox.Show("Данных в базе нет");
  7. }
  8. else
  9. {
  10. Справочник_Автоинспектора.Form1.Node<int> elem;
  11. elem = null;
  12. elem=newForm1.perem.SearchElement(newForm1.perem.Root , Convert.ToInt32(maskedTextBox2.Text));
  13. if (elem != null)
  14. {
  15. maskedTextBox4.Text = Convert.ToString(elem.power);
  16. maskedTextBox3.Text = Convert.ToString(elem.year);
  17. maskedTextBox5.Text = Convert.ToString(elem.mileage);
  18. maskedTextBox1.Text = Convert.ToString(elem.date);
  19. comboBox1.Text = Convert.ToString(elem.brand);
  20. }
  21. }
  22. }
Функция поиска:
Листинг программы
  1. public Node<T> SearchElement(Node<T> CurrentElem, int iscom)
  2. {
  3. Node<T> vozvrat=null;
  4. if (CurrentElem==null)
  5. {
  6. MessageBox.Show("Элемента не существует в базе!");
  7. vozvrat = null;
  8. }
  9. else if (Convert.ToInt32(CurrentElem.number) == iscom)
  10. {
  11. vozvrat = CurrentElem;
  12. }
  13. else if (Convert.ToInt32(CurrentElem.number) < iscom)
  14. {
  15. SearchElement(CurrentElem.left, iscom);
  16. }
  17. else if (Convert.ToInt32(CurrentElem.number) > iscom)
  18. {
  19. SearchElement(CurrentElem.right, iscom);
  20. }
  21. return (vozvrat);
  22. }

Решение задачи: «Зацикливание в вызове функции»

textual
Листинг программы
  1.         public Node<T> SearchElement(Node<T> CurrentElem, int iscom)
  2.         {
  3.             if (CurrentElem == null)
  4.                 return null;
  5.            
  6.             if (Convert.ToInt32(CurrentElem.number) == iscom)
  7.                 return CurrentElem;
  8.            
  9.             if (Convert.ToInt32(CurrentElem.number) < iscom)
  10.                 return SearchElement(CurrentElem.left, iscom);
  11.             else
  12.                 return SearchElement(CurrentElem.right, iscom);
  13.         }

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


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

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

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы