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

1デフォルトの名無しさん
垢版 |
2015/11/28(土) 18:51:38.86ID:Rc2MJzM/
なあ、再帰関数好きな人いる?
2015/11/28(土) 18:55:04.46ID:SbMJmhTc
わくわく
2015/11/28(土) 19:23:33.42ID:mf/sQ31/
嫌いな奴なんて見たことない
2015/11/28(土) 19:30:25.39ID:R0seH/nX
ループで書けるものはループで書く。
再帰使うのは仕方ない場合だけ。
2015/11/28(土) 19:53:36.58ID:R0seH/nX
スタック的なメモリ確保が必要かどうかがループと再帰を使い分ける分岐点じゃね。
末尾再帰最適化とかは本末転倒なイメージ。
2015/11/28(土) 20:05:09.47ID:N2qWmI2+
前スレ
なあ、再帰関数好きな人いる? パート2
http://peace.2ch.net/test/read.cgi/tech/1441528549/
2015/11/28(土) 20:30:33.91ID:Tq6BVuZs
>>5
ループ実装を隠せるのは大きいよ
抽象化はプログラミング言語の進化のベクトルと一致するからね
2015/11/28(土) 20:39:12.74ID:R0seH/nX
ループより再帰のほうが抽象度が高いと言っている?
そこは俺にはよくわからん。

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

もちろん再帰をループにするためにスタックを自前で用意するといったことでは本末転倒だが。
2015/11/28(土) 20:41:49.23ID:R0seH/nX
ツリーの巡回は再帰を使ったほうがいいだろう。
リストの巡回はループでいいんじゃね?
2015/11/28(土) 20:48:22.48ID:Tq6BVuZs
>>8
> 俺的にはプログラムには必要最小限の機能を使うべき
そういうのはコンパイラなりインタプリタなりが頑張るべきところだと思うね
人間はより抽象化された対象を扱うようにするのがモダンなプログラミング言語の方向だし
11デフォルトの名無しさん
垢版 |
2015/11/28(土) 20:52:46.74ID:fFSPKhVt
抽象的なスレだな
2015/11/28(土) 20:58:39.47ID:R0seH/nX
うーん。必要な抽象化は歓迎するが無駄な抽象化は歓迎しないというか。

この例は再帰とは関係ないけどJavaのファイル入出力なんかは
結構複雑な作りになってて無駄な抽象化なんじゃねーのとか思ってしまう。
まあ、俺個人の感想だが。
2015/11/28(土) 21:12:02.73ID:M/Wigktg
アルゴリズムが再帰なら普通に再帰で書く
スタックサイズ制限とかあるなら別だけど
2015/11/28(土) 21:30:44.25ID:10sD81C/
アルゴリズムが再帰であってもクイックソートなど
再帰のままじゃあ使い物にならんものがいくらでも。
2015/11/28(土) 21:32:52.35ID:R0seH/nX
スマンw クイックソートは再帰で書くわw
16デフォルトの名無しさん
垢版 |
2015/11/28(土) 21:34:06.03ID:fFSPKhVt
書いたことないくせにw
2015/11/28(土) 21:52:35.40ID:R0seH/nX
書いたことはあるけど10年以上昔の話だな。
これは拾い物だけどクイックソートなんてこれだけのことだろ。

qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
18デフォルトの名無しさん
垢版 |
2015/11/28(土) 22:09:37.77ID:fFSPKhVt
リストの巡回はループでいいんじゃないんかw
2015/11/28(土) 22:13:01.33ID:R0seH/nX
クイックソートは単純な巡回とは違うだろ。
だからスタック的なメモリを必要とするかどうかだよ。
20デフォルトの名無しさん
垢版 |
2015/11/28(土) 22:21:22.26ID:fFSPKhVt
filterはリストの巡回とちゃうんかw
2015/11/28(土) 22:25:38.46ID:R0seH/nX
filterの実装がどうなってるかまでは知らんがな。
22デフォルトの名無しさん
垢版 |
2015/11/28(土) 22:32:42.45ID:fFSPKhVt
知らんなら最初からそう言えやw
レスを投稿する