Итак, я написал функцию в ракетке, которая вычисляет суммы:
(define (sum term a next b)
(if (> a b)
0
(+ (term a) (sum term (next a) next b))))
Термин - это то, какая функция применяется к каждому аргументу. A — начало следующего — это то, как мы переходим к следующему элементу (т. е. a2 = 2*a1 или a2 = a1 +1 и т. д.), а b — последний элемент.
Есть 2 дополнительные функции:
(define (square x) (* x x))
(define (inc x) (+ x 1))
Если я наберу:
(сумма в квадрате 1 плюс 5) Я понял, что верно 55
Но если я наберу:
(сумма квадрат 1 квадрат 5)
Я застрял в петле!? Почему a2 должно быть равно a1*a1 и a3=a2*a2, а a должно превосходить b, чтобы условие завершения рекурсии было полным. Очень странный.