レスありがとうございます。

>>788
なるほど。途中は何をやっていたもいいと。
処理の最後(末尾)で自身を呼び出していればOKということですね。

>>789
>関数を処理した後に行わないといけない処理を含んでいる。
これは、今の例の場合 return のことでしょうか?
仮にcalculateの戻り値をvoidにできたとして、最後にcalculateを
呼び出していれば、自己末尾再帰ということになるのでしょうか?

>>790
確かにそうですね。引数が一つ余分でした。


アルゴリズムの範疇になるかと思いますが、
上のC言語での階乗計算を自己末尾再帰で表現することは可能ですよね?
Schemeの再帰は実行効率を考えて自己末尾再帰が採用されているという
ことですよね。