Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 42

Как исправить рекурсию?

08.10.2017, 12:58. Показов 2493. Ответов 1

Студворк — интернет-сервис помощи студентам
Есть метод, смысл которого в том, что он сохраняет и возвращает введенное с клавиатуры нечетное положительное число, которое будет определять размерность массива. И отфильтровывает четные, отрицательные, нули и другие знаки. Метод IsUneven проверяет число на нечетность.
При тестировании метод ведет себя хорошо, если сразу же ввести нечетное положительное. Если же перед этим вводить ошибочные значения - они все вроде бы отфильтровываются, как положено, но когда наконец вводишь нечетное положительное - происходит, как я понимаю, возврат к предыдущим виткам рекурсии, и возвращаемое значение вновь обнуляется!
Подскажите, как это исправить?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 public static int NumberOfElementsDialog()
        {
            Console.WriteLine("Введите размерность массива: ");
            int UserNumber=0;
            bool result = Int32.TryParse(Console.ReadLine(), out int Number);
            if (result)
            {
               bool Check = IsUneven(Number);
                if(Check && Number>0)
                {
                    UserNumber = Number;
                }
                else if(Number<=0)
                {
                    Console.WriteLine("В массиве не может быть 0 или меньше элементов.");
                    NumberOfElementsDialog();
                }
                else
                {
                    Console.WriteLine("В массиве с четным количеством элементов нет среднего элемента! Введите нечетное число элементов.");
                    NumberOfElementsDialog();
                }
                
            }
            else
            {
                Console.WriteLine("Введено ошибочное значение. Нельзя преобразовать значение в число элементов массива.");
                NumberOfElementsDialog();
            }
            return UserNumber;
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.10.2017, 12:58
Ответы с готовыми решениями:

Поиск в ширину - как исправить бесконечную рекурсию?
Привет! Я невеликий знаток питона, но лабу сдать нужно. :( Нужно найти кратчайший путь между двумя вершинами неориентированного графа...

Графика. Исправить рекурсию треугольника
Как исправить программу так что бы она рисовало бы только с 3 линиями. uses crt, graph; const y=200; var gd, gm, tmp:integer; ...

Исправить ошибку в коде, реализующем рекурсию
нужно решить такое уравнение: 1)pk=pk-1*x/k; 2)ex=\sum_{k}^{x}pk+1; 3)otvet=x+2+ex мой иекси программы: #include...

1
298 / 107 / 31
Регистрация: 12.03.2012
Сообщений: 449
08.10.2017, 13:08
Вероятно,
C#
1
NumberOfElementsDialog();
=>
C#
1
return NumberOfElementsDialog();
К слову, если метод написан не для изучения рекурсии, лучше тут от нее избавиться
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2017, 13:08
Помогаю со студенческими работами здесь

Переделать рекурсию по аргументу в рекурсию по значению
эта рекурсия по аргументу, заменяющая Y на число, равное глубине вложения Y в список List, например, Y=A, List=((A B)A(C(A(A D)))) -&gt;...

Как повернуть рекурсию?
Здравствуйте, есть условие: нужно создать рекурсивную подпрограмму, которая будет рисовать пирамиду из введенного символа. То есть,...

Как сделать рекурсию?
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include&lt;windows.h&gt; #include &lt;iostream&gt; int main(void) { ...

Как обойти рекурсию?
double f(x) { return sin(x) + f(sin(x)); } можно ли сделать без этого как-нибудь?

Как вызвать рекурсию?
begin for i:=0 to (y-x) div 2 do if a&lt;&gt;a then begin Palindrom:=false exit; end; как вызвать рекурсию??


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru