花谷です。

>> Ruby では再帰定義を使っても速度的には問題は無いような印象を
>> 持っていますが
>> 本当のところはどうなんでしょうか?
>
> やっぱり少しは違いますね。でも今回の場合、呼び出しの深さは
> log n 程度なんで、目立ちません。もっとも n が大きくなって
> くるとやっぱり差が出てきますけどね。
>
実用上スピードが求められるのは、行列が大きいときだと勝手に仮定すると、
積に対して再帰のコストはあまり大きくないように思います。
記述がすっきりしているというのも、再帰がポイント高く見えます。

小さい行列の大きな羃をたくさん計算するシチュエーション
になったことがないもので…