Решение упражнения 2.34 из SICP

30 January, 2008 (21:15) | Решения упражнений

Вычисляя значение многочлена от переменной 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