「SICPを読もう - (3) 1章 - 手続きによる抽象の構築(1-30ページ)」で反復が分からないと書いたのですが、trace を使えば視覚的に関数の呼び出しが理解できるのでこれを利用してみました。 題材としては一番単純な factorial を取り上げます。 まずは再帰版 (define (factorial n) (if (= 0 n) 1 (* n (factorial (- n 1)))))trace を行うためのおまじないをしてから実行してみます。 gosh> (use slib) gosh> (require 'trace) gosh> (factorial 5) gosh> CALL factorial 5 CALL factorial 4 CALL factorial 3 CALL factorial 2 CALL factorial 1 RETN factorial