なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net (914レス)
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1448704298/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
8: デフォルトの名無しさん [sage] 2015/11/28(土) 20:39:12.74 ID:R0seH/nX ループより再帰のほうが抽象度が高いと言っている? そこは俺にはよくわからん。 俺的にはプログラムには必要最小限の機能を使うべきで、 本質的にループより再帰のほうが強力なのだから 可能な限りループを使うべきと思ってる。 もちろん再帰をループにするためにスタックを自前で用意するといったことでは本末転倒だが。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/8
53: デフォルトの名無しさん [] 2015/11/29(日) 21:52:31.69 ID:ILoya83o >>52 ちょっとそのやり方で、HTMLの一部をコピペするコード書いてみて。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/53
92: デフォルトの名無しさん [sage] 2015/12/02(水) 09:19:02.13 ID:UkYZlpUx 自分には分からなかったわ じゃあ質問なんだけど、再帰は全てスタック+ループで書き換えられるの? http://mevius.5ch.net/test/read.cgi/tech/1448704298/92
201: デフォルトの名無しさん [] 2015/12/22(火) 23:51:52.68 ID:2TsBrERG >>198 へい。再帰が130倍時間がかかるエビデンス。 http://www.fastpic.jp/images.php?file=1406113032.png http://mevius.5ch.net/test/read.cgi/tech/1448704298/201
205: デフォルトの名無しさん [] 2015/12/23(水) 07:21:41.71 ID:fM9ORKUP >>201 必死で再帰否定してるバカは知能が低いというエビデンス乙 シェル関数は呼び出しのたびに名前解決するのでペナルティが大きい http://mevius.5ch.net/test/read.cgi/tech/1448704298/205
219: デフォルトの名無しさん [sage] 2015/12/23(水) 16:35:42.36 ID:u0B3Sjd8 だいたい再帰で問題が無いなんて クイックソートで再帰が役に立たない事すら知らないってことか? 処理件数が増えたら速度の差なんて、何万倍どころじゃないし。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/219
222: デフォルトの名無しさん [] 2015/12/23(水) 17:05:56.20 ID:fM9ORKUP >>219 じゃ、これを10000倍高速化して実証してよ。 http://svnweb.freebsd.org/base/stable/10/lib/libc/stdlib/qsort.c?revision=256281&view=markup http://mevius.5ch.net/test/read.cgi/tech/1448704298/222
225: デフォルトの名無しさん [sage] 2015/12/23(水) 17:56:16.45 ID:ZCUCTd42 一万倍とかwwww どこをどうやったら一万倍差がつくんだ http://mevius.5ch.net/test/read.cgi/tech/1448704298/225
281: デフォルトの名無しさん [] 2015/12/26(土) 19:14:27.33 ID:6n5NtJkM >>278 >>201 がすべてを物語っている。 これが何よりの証拠。再帰がとてつもなく効率が悪いことを つまびらかにしてみせた。ここに来て見てみぬふりは通用しない。 エビデンスもきちんと示されている。もはや知らぬ存ぜぬでは済まされない。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/281
353: デフォルトの名無しさん [sage] 2015/12/27(日) 03:35:18.72 ID:Y7IK7QLW ループの方が速かったので訂正よろw 328 名前:デフォルトの名無しさん[] 投稿日:2015/12/26(土) 21:22:21.55 ID:EXUTS9i+ [10/10] なんだやっぱり再帰の方がいいのか 329 名前:デフォルトの名無しさん[sage] 投稿日:2015/12/26(土) 21:26:26.06 ID:hFLlv/LI [1/3] ぐうの音も出ないなこれは http://mevius.5ch.net/test/read.cgi/tech/1448704298/353
379: デフォルトの名無しさん [sage] 2015/12/27(日) 12:20:57.14 ID:nuYFrBF7 クイックソートだからなんとかなってるだけで たとえば赤黒木の操作を自前でスタック管理するアホはいないわけ http://mevius.5ch.net/test/read.cgi/tech/1448704298/379
388: デフォルトの名無しさん [] 2015/12/27(日) 13:36:27.64 ID:9aquywWv >>379 お前は何を言っているんだ。 FreeBSDもLinuxも.NETもJavaも赤黒木はループで実装してるぞ。 再帰はプログラムの中に時限爆弾仕込むようなもの。再帰使うやつはテロリスト。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/388
389: デフォルトの名無しさん [sage] 2015/12/27(日) 13:46:00.90 ID:nuYFrBF7 頑張ってバグ入れずに済んでよかったね、としか。 しかもそれで得られる速度の向上も微々たるもの。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/389
398: デフォルトの名無しさん [] 2015/12/27(日) 16:29:32.45 ID:hwv/tSGM >>388 LinuxもFreeBSDも木全体に対して何らかの操作を行うインターフェースを実装してないからあたりまえ。 どっかで見たことある気がしたので探してみたらunbound http://code.metager.de/source/xref/freebsd/contrib/unbound/util/rbtree.c また一つ、再帰否定バカが無知のエビデンス(笑)を積み重ねていく http://mevius.5ch.net/test/read.cgi/tech/1448704298/398
403: デフォルトの名無しさん [] 2015/12/27(日) 17:03:04.29 ID:9aquywWv >>402 スタック管理の解釈次第だね。>>388が変だと結論できる解釈もありだね。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/403
422: デフォルトの名無しさん [sage] 2015/12/27(日) 17:46:46.63 ID:YWwZOVBb 末尾再帰を勘違いしている人がいるので説明しておこう。 末尾再帰は「再帰を末尾再帰で書けば速くなる」というものではなくて (単純な)ループを何らかの理由で再帰の形にしないといけない時、 末尾再帰の条件を満たすように、ループを再帰に変換すると コンパイラが再帰をループに逆変換してくれる機能 なので、再帰を全て末尾再帰にできるわけではなく (末尾再帰にできるのは、元が単純なループの場合のみ) また、ループ ─(人間)→ 再帰 ─(コンパイラ) → ループ というふうに、ループに戻しているだけなのでループより速くなることはない。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/422
429: デフォルトの名無しさん [sage] 2015/12/27(日) 18:04:52.45 ID:Zmrinoji >>427 それじゃぁ各ノードに可変個の子要素を持つ多分木を列挙するコードは どうやって書くつもり? for (auto it : children) { if (it->is_leaf()) { printf("%d ", it->value); } else { it->print_values(); } } http://mevius.5ch.net/test/read.cgi/tech/1448704298/429
770: デフォルトの名無しさん [sage] 2016/11/11(金) 11:06:28.50 ID:4NXZomhC C言語は関数内でローカル関数を定義できないから嫌い ローカル関数でなら末尾呼び出し除去の保証とかやりやすいのに http://mevius.5ch.net/test/read.cgi/tech/1448704298/770
793: デフォルトの名無しさん [] 2016/11/17(木) 11:34:22.18 ID:u2Ucvcf0 情報を保存しながら、進むならば、ループだっていつかオーバーフローする。 保存せずに計算できるならば、再帰でもオーバーフローしないかもしれない。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/793
797: 793 [sage] 2016/11/17(木) 13:03:18.99 ID:u2Ucvcf0 >>796 Prologですから再帰述語で関数ではありませんが、 repeat :- 割り込みあり,!. repeat :- repeat. の場合、スタックの一番上でpop,pushを繰り返すことが可能なのではないでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1448704298/797
813: デフォルトの名無しさん [sage] 2016/11/26(土) 09:43:28.08 ID:cQHpTyuw >>811 再帰は、入れ子状の関数呼び出しで、呼び出す関数は全部同一だから、 コードは一つで良い。しかし、関数だから呼び出す度にスタックに情報を積むし、 戻ってくるまで、積んである情報をPOPできない。 ただし、関数が末尾に有る時、則ち、戻って来た情報に対して何らかの計算をしてから 情報を返すということがない関数に関しては、戻ってきた値を直接自分の戻す値に できるわけだから、呼びだされた時の普通なら積む情報を積まずに済ませることが できるかも知れない。こういうことを「実体」というのですないか? http://mevius.5ch.net/test/read.cgi/tech/1448704298/813
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.047s