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

Формула программиста
основатель — Волосатов Евгений Витольдович

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

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

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




Оцени работу

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

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

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


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

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


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

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


  • Отчёт оценивали:
    6925Артём+1   459Сергей Сергеевич+1   7157muxasio+1   5760Мариша +1   6195sergey+1   7645Александр Львович+1   4395Денис+1   4467Alcatraz+1   4992Николай+1   8886Михаил Ермишин+1   9160Сергій+1   1Евгений Витольдович+1   3664данила+1   689Igorenzia+1   8946inward+1   6985Alexandr+1   24Оля+1   2773Никита+1   8275Tekashnik+1   6282Михаил+1  

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




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: находить НОД рекурсивно
Трудности: как найти НОД
не все тесты проходятся на 100%
Научился: Рекурсии
Трудности: Всё просто
Всё оказывается просто!