Решение упражнения 2.34 из SICP
Вычисляя значение многочлена от переменной x по схеме Горнера, мы действуем по следующему принципу: берем младший коэффициент и прибавляем к нему x, умноженный на значение многочлена, построенного по остальным коэффициентам.
Например, если обозначить многочлен как p, то p(1, 3, 0, 5, 0, 1)(x) = 1 + x * p(3, 0, 5, 0, 1)(x).
Тогда накапливающая функция для accumulate будет просто прибавлять к первому аргументу второй, умноженный на x, а процедура вычисления полинома в точке x по схеме Горнера легко записывается таким образом:
(define (horner-eval x coefficient-sequence) (accumulate (lambda (this-coeff higher-terms) (+ this-coeff (* x higher-terms))) 0 coefficient-sequence))
Write a comment