Чтобы функция что-то вернула, где-то в ней должен быть достижимый оператор return с результатом вычислений.
Когда return условный, как у вас, то он может и не случиться. В этом случае функция выполнит всё, что должна, дойдёт до конца и ничего не вернёт. Точнее, по умолчанию она вернёт undefined.
Ещё важно, что если функцию вызвать просто так в качестве оператора, то её результат отбрасывается, какой бы он ни был:
getSum(begin + 1, end, sum);
В этом примере функция вызывается не как часть выражения, где её результат может быть использован, а сама по себе, как отдельная инструкция. Поэтому её результат нигде не сохраняется, и просто отбрасывается.