Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Комбинаторика / Рекурсия. Общий делитель

  • На этом уроке мы пойдём в гости к роботу Шарпу.

    Задание:
    Решить задачу «Общий делитель».
  • Дата отправки отчёта: 12 февраля 2016 г.
  • Задание выполнено: за 24 час. 00 мин.
  • Чему научился: Искать разные способы решения одной задачи.
  • Что было сложным: Минимизировать время работы программы, не изменяя алгоритма. Пока не смог.
  • Комментарии: Со скоростью работы программы осталось много непонятных моментов, с которыми постараюсь разобраться. В частности, при вычислении НОД(33333333, 1111) программа зависает, если вместо
    if (a>b) return NOD(a-b,b);
    написать
    {
    long c = a-b;
    ...
    if (a>b) return NOD(c,b);
  • Оценка видео-уроку:
Отчёт от 7980 за Комбинаторика / Рекурсия. Общий делитель




Оцени работу

 
Сохранить страницу:

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Сергей Лузум  # Комбинаторика / Рекурсия. Общий делитель / 2016-02-12 11:49

Используй операцию взятия остатка %, вместо вычитания.


7980. --
Сергей Лузум
Сергей Лузум
ответить
→  Евгений Волосатов  # Комбинаторика / Рекурсия. Общий делитель / 2016-02-12 12:01

Я видел этот вариант, но ведь это уже принципиально другой алгоритм, резко сокращающий число ходов... А мне было интересно просто максимально ускорить все вычисления, АБСОЛЮТНО не меняя алгоритм. Да и просто сама причина такого поведения не понятна. Вроде, для переполнения long нужны гораздо большие значения...


24. --
Олюшка
Олюшка
ответить
→  Сергей Лузум  # Комбинаторика / Рекурсия. Общий делитель / 2016-02-12 17:32

Сергей, уверена теперь ты уже знаешь и расширил своих понятия и знания! :)



Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Продолжаю тренироваться в рекурсии
Трудности: К сожалению, для входных данных 33333333 и 1111 робот шарп падает с таймаутом. К слову, VS2013 тоже выдаёт StackOverflow. Если есть идеи, почему так происходит, прошу указать мне на мою ошибку.
нет таковых


Научился: Никогда не находила ранее общи знаменатель подобным образом.
Трудности: Не сложно, но по времени затратно, сама разбиралась, как решить.
Хороший урок для закрепления понимания работы с рекурсией.