パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

再帰呼び出し、よく使う?使わない?」記事へのコメント

  • by Anonymous Coward on 2015年02月11日 19時50分 (#2759524)

    そもそもIntelはコールスタックを一部ハード実装して高速化する仕組みが入っている。
    というよりコールスタックが深すぎるとキャッシュアウトして、メインメモリに行きかねない。
    つまり深すぎる再帰プログラムを書くと、実行速度がスピンダウンする上に、オーバーフローのリスクが有る。

    したがって、デバッグ版や作り捨てでは 再帰で実装するけど
    リリース版(商用実装)では、それをループなどに展開して、自前のコールスタックに入れてオーバーフローしそうになったらスローする実装にする。

    • by Anonymous Coward

      末尾呼び出しの最適化ある前提でしょう

    • by Anonymous Coward

      再帰で実装可能なものは必ずループでも実装可能なの?

      • by Anonymous Coward on 2015年02月11日 23時04分 (#2759619)

             ____________
            ヾミ || || || || || || || ,l,,l,,l 川〃彡|
             V~~''-山┴''''""~   ヾニニ彡|       できる・・・・・・!
             / 二ー―''二      ヾニニ┤       できるが・・・
            '-.,   ̄ ̄     _,,,..-‐、 〉ニニ|       今回 まだ その方法と可読性の
           /"''-ニ,‐l   l`__ニ-‐'''""` /ニ二|       指定まではしていない
           | ===、!  `=====、  l =lべ=|
        .   | `ー゚‐'/   `ー‐゚―'   l.=lへ|~|       そのことを
            |`ー‐/    `ー――  H,〉|=|       どうか諸君らも
            |  /    、          l|__ノー|       思い出していただきたい
        .   | /`ー ~ ′   \   .|ヾ.ニ|ヽ
            |l 下王l王l王l王lヲ|   | ヾ_,| \     つまり・・・・
        .     |    ≡         |   `l   \__   我々がその気になれば
            !、           _,,..-'′ /l     | ~'''  パラメータの受け渡しは明示的に
        ‐''" ̄| `iー-..,,,_,,,,,....-‐'''"    /  |      |    スタック キューということも
         -―|  |\          /    |      |   可能だろう・・・・・・・・・・ということ・・・・!

        親コメント
      • by Anonymous Coward

        コールスタックの代わりにコレクションとしてのスタックを持ってきて、再帰の代わりにスタック操作してループの頭に飛んだり、ループの途中まで処理をスキップしたりすれば良い。

        極端な話CPUは機械語インタプリタのループを回しているようなものだし、そっちでもいいよ

日々是ハック也 -- あるハードコアバイナリアン

処理中...