Здесь код в котором не могу сообразить
#lang racket
(define sum-of-first
(lambda (n)
(if (= n 1)
1
(+ (sum-of-first (- n 1))
n))))
например, ввожу, в debugger
(sum-of-first 4)
работает только эта часть
(sum-of-first (- n 1))
полученный результат складывается в stack, в данном случае это
4
3
2
1 и вот здесь я поплыл т.к. в этом месте
(if (= n 1)
1
код должен вылететь, а он нет, он начинает отрабатывать сумму
(+ (sum-of-first (- n 1))
n)
Как это понять?
Вижу, что въехать в рекурсию не могу, на emacs то же самое, только debugger отсутствует
Пример из Concrete abstraction