X



なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net

レス数が900を超えています。1000を超えると表示できなくなるよ。
0899ハノン ◆QZaw55cn4c
垢版 |
2021/07/25(日) 23:45:12.36ID:rUybnQpf
>>898
末尾再帰ならそうだと思いますが、末尾再帰でなければ無理でしょう >>896-897 は末尾再帰じゃないから最適化されにくい、というか、されない
0902デフォルトの名無しさん
垢版 |
2021/10/02(土) 16:12:27.49ID:qz0ghb/n
>>899
結合法則を仮定していいドメインなら
CPS変換を用いて最適化する手法が随分前からあります
結合法則はGPU並列化でも使われてます
浮動小数点の場合は工夫しないと誤差が変わりますが

ちなみにC++ conceptの初期案でもaxiomで法則を記述出来ました
0903ハノン ◆QZaw55cn4c
垢版 |
2021/10/02(土) 20:52:53.81ID:7AkA9F3V
>>902
scheme の継続渡しに関係しますか?
キーワードありがとうございます
0904デフォルトの名無しさん
垢版 |
2021/10/04(月) 21:48:56.27ID:tW+d3xqB
>>903
そう
Continuation-passing style, defunctionalization, and associativity
Categorical Structure of ContinuationPassing Style
この辺のサンプルプログラム読んで
0906デフォルトの名無しさん
垢版 |
2022/09/07(水) 22:59:05.75ID:hj8+EGae
すき

しかし再帰絶対書かないマンが思いの外多くて草生えるわ

末尾最適化できない再起をループに展開したって結局キューだのスタックオブジェクトでヒープ使うわけで
メモリ大幅に節約できると勘違いしてる基地外とか話にならん

再帰深度がたかだか1000段とかでスタックフレームにデカいオブジェクトブチ込んだりしなきゃ
素直に再帰で組むのがいいに決まってるじゃないか
数学的演算でもしない限り業務用でスタック溢れるケースを探す方が大変
0907デフォルトの名無しさん
垢版 |
2022/09/08(木) 09:28:47.03ID:JEMfdspa
スタックとヒープは別物
共有してるアーキテクチャもあるが
0910ハノン ◆QZaw55cn4c
垢版 |
2022/09/11(日) 14:15:38.74ID:gVwBfSXr
>>909
二方向に再帰するもの、は展開に苦労しますね
式の評価は、再帰じゃないと書けないですね
0912デフォルトの名無しさん
垢版 |
2024/01/02(火) 13:18:51.50ID:yx0oLXiq
再帰的データ構造は再帰でたどるのが楽なんだけど
ループで処理したほうが途中で抜けたり処理を組み合わせやすい
そこで再帰的な処理を遅延リストと組み合わせてループで処理するやり方がいまでは一般的な気がする

こういうふうに C#
https://paiza.io/projects/WbmxzuNdJq95o9RYTKFY_A
0913デフォルトの名無しさん
垢版 |
2024/01/04(木) 11:34:09.71ID:iR4GsMlV
何が一般的なのか知らんがかなり変態的なコードだな
ループでGetEnumerator呼び出したりMoveNextの戻り値を見ずCurrentを取り出したりは一般的じゃないぞ
つーかバグだろそれ
レスを投稿する

レス数が900を超えています。1000を超えると表示できなくなるよ。

ニューススポーツなんでも実況