(define repeatedly-square
(lambda (b n)
(if (= n 0)
b
(square (repeatedly-square b (- n 1))))))
Q: What kind of process does this procedure generate, and why?
A: A recursive one, since it repeatedly squares a smaller value first,
putting the final squaring on hold.
> (repeatedly-square 2 5)
|(repeatedly-square 2 5)
| (repeatedly-square 2 4)
| |(repeatedly-square 2 3)
| | (repeatedly-square 2 2)
| | |(repeatedly-square 2 1)
| | | (repeatedly-square 2 0)
| | | 2
| | |4
| | 16
| |256
| 65536
|4294967296
4294967296