- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
387 :デフォルトの名無しさん[sage]:2015/12/27(日) 13:08:45.42 ID:yWds0j/q - >>378
tail callを繰り返しに変換できるようなケースだと 関数呼び出しはコスト高かも知れないが、 ループ版では明示的スタック操作をしなければならない場合、 call,ret相当のことをjpと組み合わせて明示的にやらないといけない。 通常、関数呼び出し後のスタックフレームの確保はcalleeが明示的にやるからループ版と変わらないが、 スタックフレームの開放はretが自動的にやる。 だからコスト的には大差なく、 関数呼び出しの方が有利なケースだってあるはず。 繰り返しの明示的なスタック操作が圧倒的有利にあるのは、 FILOじゃなくてFIFOにしたり戦略が建てられること。
|