На самом деле вам не нужно делать
return gcd(b,a%b)
, но это самый простой способ сделать это.
Кажется, вы понимаете, что вам нужно возвращаться во всех ситуациях, если int из функция с головой типа
int gcd(int a, int b)
Выполнение в обеих ветвях if - это короткий способ сделать это.
Можно утверждать, что для таких побочных целей, как удобочитаемость, ремонтопригодность, надежность и т. Д. c. самый последний оператор возвращающих int функций всегда должен быть return SomeInt;
. Но это не так просто сделать так, чтобы не получить жалобу на «недоступный код» многими инструментами анализа stati c. Локальная переменная int returnValue
, инициализированная мудро выбранным значением по умолчанию и записанная во всех ветвях, может привести вас туда.
Но опять же, некоторые инструменты жалуются, что значение записывается в переменную, которая затем всегда перезаписывается перед использованием. .. Таким образом, инициализация по умолчанию может быть a
, и тогда она не будет перезаписана в «тогда». Осчастливить инструменты анализа иногда - это игра l oop -the-loops ...
Кстати, код, который вы показываете, может (абсолютно без гарантии) действительно работать, потому что компиляторы иногда возвращают последний вычисленный результат по умолчанию, даже если он был проигнорирован. Но вы никогда не должны полагаться на это и заслуживать каких-либо жалоб со стороны людей или инструментов. Мы можем с уверенностью считать, что это BadIdea (тм).