Синус угла
Синус угла (заданного в радианах) можно вычислить, если воспользоваться приближением sin x ≈ x при малых x и употребить тригонометрическое тождество
sin(x) = 3sin(x / 3) − 4sin³(x / 3)
для уменьшения значения аргумента sin . (В этом упражнении мы будем считать, что угол «достаточно мал», если он не больше 0.1 радиана.) Эта идея используется в следующих процедурах:
(define (cube x) (* x x x))
(define (p x) (- (* 3 x) (* 4 (cube x))))
(define (sine angle)
(if (not (> (abs angle) 0.1))
angle
(p (sine (/ angle 3.0)))))
а. Сколько раз вызывается процедура p при вычислении (sine 12.15) ?
б. Каковы порядки роста в терминах количества шагов и используемой памяти (как функция a ) для процесса, порождаемого процедурой sine при вычислении (sine a) ?
Комментарии отсутствуют.