Каждый раз, когда вы вызываете функцию суммы, вы всегда возвращаете ссылку на функцию f. Итак, sum (1) вернет ссылку на f, а sum (1) .toString () вернет 1, sum (1) (2) вернет ссылку на f, а sum (1) (2) .toString () вернет 3
Это не рекурсия, потому что вы возвращаете только ссылку. Так что, пока вы не вызовете его, функция не будет вызвана