アカウント名:
パスワード:
そもそもIntelはコールスタックを一部ハード実装して高速化する仕組みが入っている。というよりコールスタックが深すぎるとキャッシュアウトして、メインメモリに行きかねない。つまり深すぎる再帰プログラムを書くと、実行速度がスピンダウンする上に、オーバーフローのリスクが有る。
したがって、デバッグ版や作り捨てでは 再帰で実装するけどリリース版(商用実装)では、それをループなどに展開して、自前のコールスタックに入れてオーバーフローしそうになったらスローする実装にする。
末尾呼び出しの最適化ある前提でしょう
再帰で実装可能なものは必ずループでも実装可能なの?
____________ ヾミ || || || || || || || ,l,,l,,l 川〃彡| V~~''-山┴''''""~ ヾニニ彡| できる・・・・・・! / 二ー―''二 ヾニニ┤ できるが・・・ '-.,  ̄ ̄ _,,,..-‐、 〉ニニ| 今回 まだ その方法と可読性の /"''-ニ,‐l l`__ニ-‐'''""` /ニ二| 指定まではしていない | ===、! `=====、 l =lべ=|. | `ー゚‐'/ `ー‐゚―' l.=lへ|~| そのことを |`ー‐/ `ー―― H,〉|=| どうか諸君らも | / 、 l|__ノー| 思い出していただきたい. | /`ー ~ ′ \ .|ヾ.ニ|ヽ |l 下王l王l王l王lヲ| | ヾ_,| \ つまり・・・・. | ≡ | `l \__ 我々がその気になれば !、 _,,..-'′ /l | ~''' パラメータの受け渡しは明示的に‐''" ̄| `iー-..,,,_,,,,,....-‐'''" / | | スタック キューということも -―| |\ / | | 可能だろう・・・・・・・・・・ということ・・・・!
コールスタックの代わりにコレクションとしてのスタックを持ってきて、再帰の代わりにスタック操作してループの頭に飛んだり、ループの途中まで処理をスキップしたりすれば良い。
極端な話CPUは機械語インタプリタのループを回しているようなものだし、そっちでもいいよ
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
コールスタックのハード実装 (スコア:0)
そもそもIntelはコールスタックを一部ハード実装して高速化する仕組みが入っている。
というよりコールスタックが深すぎるとキャッシュアウトして、メインメモリに行きかねない。
つまり深すぎる再帰プログラムを書くと、実行速度がスピンダウンする上に、オーバーフローのリスクが有る。
したがって、デバッグ版や作り捨てでは 再帰で実装するけど
リリース版(商用実装)では、それをループなどに展開して、自前のコールスタックに入れてオーバーフローしそうになったらスローする実装にする。
Re: (スコア:0)
末尾呼び出しの最適化ある前提でしょう
Re: (スコア:0)
再帰で実装可能なものは必ずループでも実装可能なの?
Re:コールスタックのハード実装 (スコア:1)
____________
ヾミ || || || || || || || ,l,,l,,l 川〃彡|
V~~''-山┴''''""~ ヾニニ彡| できる・・・・・・!
/ 二ー―''二 ヾニニ┤ できるが・・・
'-.,  ̄ ̄ _,,,..-‐、 〉ニニ| 今回 まだ その方法と可読性の
/"''-ニ,‐l l`__ニ-‐'''""` /ニ二| 指定まではしていない
| ===、! `=====、 l =lべ=|
. | `ー゚‐'/ `ー‐゚―' l.=lへ|~| そのことを
|`ー‐/ `ー―― H,〉|=| どうか諸君らも
| / 、 l|__ノー| 思い出していただきたい
. | /`ー ~ ′ \ .|ヾ.ニ|ヽ
|l 下王l王l王l王lヲ| | ヾ_,| \ つまり・・・・
. | ≡ | `l \__ 我々がその気になれば
!、 _,,..-'′ /l | ~''' パラメータの受け渡しは明示的に
‐''" ̄| `iー-..,,,_,,,,,....-‐'''" / | | スタック キューということも
-―| |\ / | | 可能だろう・・・・・・・・・・ということ・・・・!
Re: (スコア:0)
コールスタックの代わりにコレクションとしてのスタックを持ってきて、再帰の代わりにスタック操作してループの頭に飛んだり、ループの途中まで処理をスキップしたりすれば良い。
極端な話CPUは機械語インタプリタのループを回しているようなものだし、そっちでもいいよ