You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sicp-all-tasks/sicp/1_002e16

67 lines
994 B

Exercise 1.16: Design a procedure that evolves
an iterative exponentiation process that uses successive squaring and uses a
logarithmic number of steps, as does fast-expt. (Hint: Using the
observation that
(
b
n
/
2
)
2
=
(
b
2
)
n
/
2
, keep, along with
the exponent
n
and the base
b
, an additional state variable
a
, and
define the state transformation in such a way that the product
a
b
n
is unchanged from state to state. At the beginning of the process
a
is taken to be 1, and the answer is given by the value of
a
at the
end of the process. In general, the technique of defining an
invariant quantity that remains unchanged from state to state is a
powerful way to think about the design of iterative algorithms.)