Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 14.12.2019
Сообщений: 2
.NET 4.x

Составить программу нахождения наименьшего общего кратного трех натуральных чисел. Что я делаю не так?

03.06.2022, 03:21. Показов 1122. Ответов 3

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Есть задание: Составить программу нахождения наименьшего общего кратного трех натуральных чисел. Пытаюсь разобраться в рекурсивных методах, возможно код вообще не правильный, заранее простите за боль в глазах

Вот код: при запуске вылетает исключение stackoverflowexception
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
32
33
34
35
36
37
38
39
40
41
42
class Program
    {
 
        static void Main(string[] args)
        {
            Random random = new Random();
 
 
            int a = random.Next(70);
            Console.WriteLine("Первое число {0}", a);
            int b = random.Next(40);
            Console.WriteLine("Второе число {0}", b);
            int c = random.Next(50);         
            Console.WriteLine("Третье число {0}", c);
 
 
            Nok(a, b, c);
 
            Console.ReadKey();
        }
 
        static double Nok(int a, int b, int c, int i = 1)
        {
            int max_num = Math.Max(Math.Max(a, b),c);
 
            if (i != max_num)
            {
                if (i / a == 1)
                {
                    if(i / b == 1)
                    {
                        if(i / c == 1)
                        {
                            Console.WriteLine(i);
                        }
                    }
                }
            }
            return Nok(a, b, c, i++);
        }
        
    }
Что я делаю не так? Если не сложно подробно объясните. Заранее спасибо!

Добавлено через 1 час 14 минут
Простите за "код" выше, я его переписал и вот что вышло:
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
32
class Program
    {
 
        static void Main(string[] args)
        {
            Random random = new Random();
 
 
            int a = random.Next(1,100);
            Console.WriteLine("Первое число {0}", a);
            int b = random.Next(1,100);
            Console.WriteLine("Второе число {0}", b);
            int c = random.Next(1,100);         
            Console.WriteLine("Третье число {0}", c);
 
 
            Console.WriteLine(Nok(a, b, c));
 
            Console.ReadKey();
        }
 
        static long Nok(int a, int b, int c, long i = 1)
        {
            if(i%a == 0 && i % b == 0 && i % c == 0)
            {
                return i;
            }
 
            return Nok(a, b, c, i + 1);
        }
        
    }
Но проблема с исключением не ушла, как ее избежать и вывести результат в консоль?

Добавлено через 5 секунд
Простите за "код" выше, я его переписал и вот что вышло:
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
32
class Program
    {
 
        static void Main(string[] args)
        {
            Random random = new Random();
 
 
            int a = random.Next(1,100);
            Console.WriteLine("Первое число {0}", a);
            int b = random.Next(1,100);
            Console.WriteLine("Второе число {0}", b);
            int c = random.Next(1,100);         
            Console.WriteLine("Третье число {0}", c);
 
 
            Console.WriteLine(Nok(a, b, c));
 
            Console.ReadKey();
        }
 
        static long Nok(int a, int b, int c, long i = 1)
        {
            if(i%a == 0 && i % b == 0 && i % c == 0)
            {
                return i;
            }
 
            return Nok(a, b, c, i + 1);
        }
        
    }
Но проблема с исключением не ушла, как ее избежать и все таки вывести результат в консоль
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2022, 03:21
Ответы с готовыми решениями:

Составить программу для нахождения наименьшего общего кратного трех натуральных чисел
Помогите написать код. Составить программу для нахождения наименьшего общего кратного трех натуральных чисел. Я ее написал , но...

Нахождения наименьшего общего кратного трех натуральных чисел
Составить программу нахождения наименьшего общего кратного трех натуральных чисел.

Составить программу нахождения наименьшего общего кратного трех натуральных чисел
Здравствуйте! помогите решить задачу Составить программу нахождения наименьшего общего кратного трех натуральных чисел. нашёл...

3
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,766
03.06.2022, 07:09
Потому что рекурсия здесь не нужна, вполне достаточно простого цикла:
C#
1
2
3
4
5
6
7
8
9
10
11
12
    static long Nok(int a, int b, int c)
    {
        for (long i = 1; i < long.MaxValue; i++)
        {
            if (i % a == 0 && i % b == 0 && i % c == 0)
            {
                return i;
            }
        }
 
        return -1;
    }
1
0 / 0 / 0
Регистрация: 14.12.2019
Сообщений: 2
03.06.2022, 08:06  [ТС]
Простите, что не написал об этом сразу. Данное задание из раздела "Разработать рекурсивный метод (возвращающий значение)". И однозначно говорит о необходимости в рекурсии.
0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,766
03.06.2022, 08:41
Лучший ответ Сообщение было отмечено MoonFox как решение

Решение

MoonFox
Тогда это ну очень странное задание. При таком диапазоне входных значений в некоторых случаях могут потребоваться сотни тысяч итераций.

Можно, конечно, не по единичке идти, а по max(a,b,c), что значительно сократит количество итераций, но это всё равно некорректный подход для решения подобной задачи, т.е. при увеличении диапазона входных значений вы точно так же можете получить переполнение стека:
C#
1
2
3
4
5
6
7
8
9
10
11
    static long Nok(int a, int b, int c, long i = 0)
    {
        i = i + Math.Max(a, Math.Max(b, c));
 
        if (i % a == 0 && i % b == 0 && i % c == 0)
        {
            return i;
        }
 
        return Nok(a, b, c, i);
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2022, 08:41
Помогаю со студенческими работами здесь

Составить программу для нахождения наименьшего общего кратного трех натуральных чисел
1)Составить программу, которая по 3 введенным числам определит могут ли они быть сторонами треугольника. 2)Даны натуральные числа a и N....

Составить программу для нахождения наименьшего общего кратного трех натуральных чисел
Решите плиз задачку через функцию Составить программу для нахождения наименьшего общего кратного трех натуральных чисел.

Составить программу для нахождения наибольшего и наименьшего общего делителя и наименьшего общего кратного двух натуральных чисел
Составить программу для нахождения наибольшего и наименьшего общего делителя и наименьшего общего кратного двух натуральных чисел по...

Составить программу для нахождения наибольшего общего и наименьшего общего кратного двух натуральных чисел
составить программу для нахождения наибольшего общего и наименьшего общего кратного двух натуральных чисел НОК(A,B)=A*B/НОД(A,B)

Составить программу для нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел
Доюрый день! помогите пожалуйста мне решить задачей Организация процедур, использование процедур Составить программу для нахождения...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru