>>922
>それは
>return n * factorial(n-1);
>と書いてはいけないと強制するということだろうか

いいえ、単に return * factorial(n-1) と書くのならば、末尾再帰ではなくなるというだけのことです。

>末尾再帰の定義を満たしているにもかかわらず認めないということはそういうことだ

もう一度ききましょう、あなたの「末尾再帰」の定義は何ですか?