なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net (914レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
8
(3): 2015/11/28(土)20:39 ID:R0seH/nX(3/13) AAS
ループより再帰のほうが抽象度が高いと言っている?
そこは俺にはよくわからん。

俺的にはプログラムには必要最小限の機能を使うべきで、
本質的にループより再帰のほうが強力なのだから
可能な限りループを使うべきと思ってる。

もちろん再帰をループにするためにスタックを自前で用意するといったことでは本末転倒だが。
53
(3): 2015/11/29(日)21:52 ID:ILoya83o(3/5) AAS
>>52
ちょっとそのやり方で、HTMLの一部をコピペするコード書いてみて。
92
(3): 2015/12/02(水)09:19 ID:UkYZlpUx(3/6) AAS
自分には分からなかったわ

じゃあ質問なんだけど、再帰は全てスタック+ループで書き換えられるの?
201
(11): 2015/12/22(火)23:51 ID:2TsBrERG(1) AAS
>>198
へい。再帰が130倍時間がかかるエビデンス。
画像リンク[php]:www.fastpic.jp
205
(3): 2015/12/23(水)07:21 ID:fM9ORKUP(1/9) AAS
>>201
必死で再帰否定してるバカは知能が低いというエビデンス乙

シェル関数は呼び出しのたびに名前解決するのでペナルティが大きい
219
(7): 2015/12/23(水)16:35 ID:u0B3Sjd8(1) AAS
だいたい再帰で問題が無いなんて
クイックソートで再帰が役に立たない事すら知らないってことか?

処理件数が増えたら速度の差なんて、何万倍どころじゃないし。
222
(3): 2015/12/23(水)17:05 ID:fM9ORKUP(4/9) AAS
>>219
じゃ、これを10000倍高速化して実証してよ。
外部リンク[c]:svnweb.freebsd.org
225
(3): 2015/12/23(水)17:56 ID:ZCUCTd42(1/2) AAS
一万倍とかwwww
どこをどうやったら一万倍差がつくんだ
281
(3): 2015/12/26(土)19:14 ID:6n5NtJkM(6/26) AAS
>>278
>>201 がすべてを物語っている。
これが何よりの証拠。再帰がとてつもなく効率が悪いことを
つまびらかにしてみせた。ここに来て見てみぬふりは通用しない。
エビデンスもきちんと示されている。もはや知らぬ存ぜぬでは済まされない。
353
(3): 2015/12/27(日)03:35 ID:Y7IK7QLW(12/16) AAS
ループの方が速かったので訂正よろ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]
ぐうの音も出ないなこれは
379
(10): 2015/12/27(日)12:20 ID:nuYFrBF7(4/5) AAS
クイックソートだからなんとかなってるだけで
たとえば赤黒木の操作を自前でスタック管理するアホはいないわけ
388
(8): 2015/12/27(日)13:36 ID:9aquywWv(1/33) AAS
>>379
お前は何を言っているんだ。
FreeBSDもLinuxも.NETもJavaも赤黒木はループで実装してるぞ。
再帰はプログラムの中に時限爆弾仕込むようなもの。再帰使うやつはテロリスト。
389
(3): 2015/12/27(日)13:46 ID:nuYFrBF7(5/5) AAS
頑張ってバグ入れずに済んでよかったね、としか。
しかもそれで得られる速度の向上も微々たるもの。
398
(3): 2015/12/27(日)16:29 ID:hwv/tSGM(7/8) AAS
>>388
LinuxもFreeBSDも木全体に対して何らかの操作を行うインターフェースを実装してないからあたりまえ。

どっかで見たことある気がしたので探してみたらunbound
外部リンク[c]:code.metager.de

また一つ、再帰否定バカが無知のエビデンス(笑)を積み重ねていく
403
(3): 2015/12/27(日)17:03 ID:9aquywWv(8/33) AAS
>>402
スタック管理の解釈次第だね。>>388が変だと結論できる解釈もありだね。
422
(6): 2015/12/27(日)17:46 ID:YWwZOVBb(1/2) AAS
末尾再帰を勘違いしている人がいるので説明しておこう。

末尾再帰は「再帰を末尾再帰で書けば速くなる」というものではなくて
(単純な)ループを何らかの理由で再帰の形にしないといけない時、
末尾再帰の条件を満たすように、ループを再帰に変換すると
コンパイラが再帰をループに逆変換してくれる機能

なので、再帰を全て末尾再帰にできるわけではなく
(末尾再帰にできるのは、元が単純なループの場合のみ)
また、ループ ─(人間)→ 再帰 ─(コンパイラ) → ループ
というふうに、ループに戻しているだけなのでループより速くなることはない。
429
(4): 2015/12/27(日)18:04 ID:Zmrinoji(22/40) AAS
>>427
それじゃぁ各ノードに可変個の子要素を持つ多分木を列挙するコードは
どうやって書くつもり?
for (auto it : children) {
 if (it->is_leaf()) {
printf("%d ", it->value);
} else {
it->print_values();
}
}
770
(3): 2016/11/11(金)11:06 ID:4NXZomhC(1) AAS
C言語は関数内でローカル関数を定義できないから嫌い
ローカル関数でなら末尾呼び出し除去の保証とかやりやすいのに
793
(3): 2016/11/17(木)11:34 ID:u2Ucvcf0(1/5) AAS
情報を保存しながら、進むならば、ループだっていつかオーバーフローする。
保存せずに計算できるならば、再帰でもオーバーフローしないかもしれない。
797
(3): 793 2016/11/17(木)13:03 ID:u2Ucvcf0(3/5) AAS
>>796
Prologですから再帰述語で関数ではありませんが、

repeat :- 割り込みあり,!.
repeat :- repeat.

の場合、スタックの一番上でpop,pushを繰り返すことが可能なのではないでしょうか。
813
(3): 2016/11/26(土)09:43 ID:cQHpTyuw(1/2) AAS
>>811
再帰は、入れ子状の関数呼び出しで、呼び出す関数は全部同一だから、
コードは一つで良い。しかし、関数だから呼び出す度にスタックに情報を積むし、
戻ってくるまで、積んである情報をPOPできない。
ただし、関数が末尾に有る時、則ち、戻って来た情報に対して何らかの計算をしてから
情報を返すということがない関数に関しては、戻ってきた値を直接自分の戻す値に
できるわけだから、呼びだされた時の普通なら積む情報を積まずに済ませることが
できるかも知れない。こういうことを「実体」というのですないか?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.082s