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

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

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

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

    Задание:
    Решить задачу «Общий делитель».
  • Дата отправки отчёта: 12 февраля
  • Задание выполнено: за 30 мин.
  • Чему научился: Училась распознавать ошибки.
  • Что было сложным: Мой С# выдал ошибку
    Error CS0161 'Program.NOD(long, long)': not all code paths return a value
    и я так и не помяла какое именно значение и куда он не выдает=( пойду во сне осмысливать =)

    Но как бы сам алгоритм у меня и по мне был похож... только более размазневый=)
  • Комментарии: static int NOD (int a, int b)
            {
                if (a == b) return a;

                if (a > b)
                {
                    a = a - b;
                    return NOD(a, b);
                }
                   
              if (b >a)
                {
                    b = b - a;
                    return NOD(a, b);
                }
            }

    как понять ошибку Error CS0161 'Program.NOD(long, long)': not all code paths return a value ?
  • Оценка видео-уроку:
Отчёт от 7157 за Комбинаторика / Рекурсия. Общий делитель


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




Оцени работу

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

8886. Михаил Ермишин
Михаил Ермишин
ответить
→  Александр Львович  # Комбинаторика / Рекурсия. Общий делитель / 2016-02-12 10:41

Компьютер всё это делает, и определяет покрытие. Компилятор нормально работает с IF просто главное не забывать что всегда бываю исключения. Например int может быть NaN или INF и при ЛЮБОМ сравнении вернёт false :~)


8886. Михаил Ермишин
Михаил Ермишин
ответить
→  muxasio  # Комбинаторика / Рекурсия. Общий делитель / 2016-02-12 10:17

Может случится и такое что никакое из условий не выполнится. Если одно из чисел будет NaN или INF :~)



7157. muxasio
muxasio
ответить
→  Александр Львович  # Комбинаторика / Рекурсия. Общий делитель / 2016-02-12 08:13

Spasibo bolshie za podrobnoe objasnenie;) ochen rada chto takie otzivchivie liudi;)


7645. Александр Львович
Александр Львович
ответить
→  muxasio  # Комбинаторика / Рекурсия. Общий делитель / 2016-02-12 05:38

Внутри каждого if у Вас есть оператор return. А также нужно поставить еще оператор return в самом конце, в случае, когда все условия if неверны. Компьютер не может определить, что с помощью if Вы перебрали все возможности. Я думаю, будет работать так:
static int NOD (int a, int b)
{
            if (a == b) return a;

            if (a > b)
            {
                a = a - b;
                return NOD(a, b);
            }
               
        b = b - a;
        return NOD(a, b);
}
Если одно из двух первых условий выполнится, то функция завершит работу с помощью одного из двух первых return. Если ни одно из двух первых условий не выполнится, то программа дойдет до конца, и произвойдет возврат с помощью третьего return.


459. Сергей Сергеевич
Сергей Сергеевич
ответить
→  muxasio  # Комбинаторика / Рекурсия. Общий делитель / 2016-02-12 02:07

Означает то что метод не возвращает значение. Возможно забыли return "что то возвращаете"


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

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




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

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

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

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