Быстрое возведение в степень
Напишите процедуру
solution
, которая развивается в виде итеративного процесса и реализует возведение в степень за логарифмическое число шагов, как
fast-expt
(Указание: используя наблюдение, что
(bⁿ୵²)² = (b²)ⁿ୵²
, храните, помимо значения степени
n
и основания
b
, дополнительную переменную состояния
a
, и определите переход между состояниями так, чтобы произведение
abⁿ
от шага к шагу не менялось. Вначале значение
a
берется равным 1, а ответ получается как значение
a
в момент окончания процесса. В общем случае метод определения инварианта (invariant quantity), который не изменяется при переходе между шагами, является мощным способом размышления о построении итеративных алгоритмов.)
Комментарии отсутствуют.