SICP 연습문제 1.16 친절한 풀이

문제

fast-expt처럼 계산 시간단계이 로그 비례로 늘어나게끔 계속 제곱하는 방법을 쓰되, 반복 프로세스를 펼쳐내는 거듭제곱 프로시저를 짜보자.

문제로 부터 얻은 것

어떤 값의 크기를 일정하게 유지시키는 방법으로 반복하는 프로세스를 쉽게 구현할 수 있다.

문제풀이

책에 귀띔으로 설명되어 있는것처럼,
abnab^{n}를 일정하게 맞추는 데에 초점을 두고 문제를 풀었습니다.
처음에는 abnab^{n}를 일정하게 맞추는 것이 무슨 의미인지 몰랐지만 곧 알수 있었습니다.
문제의 해법은 abnab^{n}를 일정하게 맞추는 동시에 b를 1로 만드는 것입니다.
그렇게 되면 결국 문제의 답은 b가 1인 시점의 a가 됩니다.
이를 구현하면 이렇게 됩니다.

fast-expt 프로시저 실행 결과

잘 실행되는 것을 확인할 수 있습니다.
반복하는 프로세스를 만드는 일반적인 방법을 알게된 것 같아 기분이 좋습니다.

읽어주셔서 감사합니다.