процедуры накапливают определяются следующим образом:Вычислить суммы с накоплением
(define (accumulate combiner null-value term a next b)
(if (> a b) null-value
(combiner (term a)
(accumulate combiner null-value term (next a) next b))))
Проблема 1: х^п ; Решение: рекурсивный без накопления
(define (expon x n)
(if (> n 0) (* x
(expon x (- n 1))
)
1))
задачи 2: х + х^2 + x^4 + x^6 + ... +, вычислим для данного n первые n элементов последовательности.
проблема 3: 1 + x/1! + x^2/2! + ... + x^n/n !; вычислить сумму для заданных х, п возможно неправильное решение:
(define (exp1 x n)
(define (term i)
(define (term1 k) (/ x k))
(accumulate * 1 term1 1 1+ i))
(accumulate + 0 term 1 1+ n))
почему предыдущий код неверен:
(exp1 0 3) -> 0; Это должно быть 1 (exp1 1 1) -> 1; Это должно быть 2