- 1 名前:名無しのプログラマ [2015/08/09(日) 17:46:33.69 ID:Icb40LOY.net]
- for,while使うの嫌いで基本的に再帰多用するんだが、だめなの?
皆から敬遠されてる気がする
- 381 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 08:32:59.75 ID:cBcKF4Ir.net]
- >>374
いやだから末尾再帰は確かにループに展開されるけど 普通の再帰は展開されない(余再帰とかいうあれ) val one:Stream[Int] = 1#::one
- 382 名前:デフォルトの名無しさん [2015/08/19(水) 08:38:24.50 ID:8XFwGYsL.net]
- >>376
じゃあ使うなよ。 再帰がヒープに展開されるなら、現状では使っても良いとするしかないだろう。 現在のコンピュータにはその程度の安全性しかない。 一方、マシンスタックが消費されるなら、これは使ってはいけない。 言語が保証できるかどうかはこういう話。 逆に言うと、保証できる言語は本質的に遅いから変えたほうが良いよ?
- 383 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 08:40:13.17 ID:cBcKF4Ir.net]
- そもそもVM上で動く言語でセキュリティの観点から再帰使うな
って言われてもな 一般化しすぎ
- 384 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 08:43:41.41 ID:cBcKF4Ir.net]
- >>377
遅延データ構造で余再帰使うなってあんた
- 385 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 08:47:34.95 ID:cBcKF4Ir.net]
- 入力をその場で評価せずに遅延データ構造であらわすってあるけど
そこで末尾再帰なんかしたらそれこそ危ない
- 386 名前:デフォルトの名無しさん [2015/08/19(水) 08:58:49.14 ID:8XFwGYsL.net]
- >>380
遅延評価によってマシンスタック消費の抑制を保証できるのであれば、 使っても良いだろう。 しかし、保証するという事はどういうことが起きるのか、良く考えたほうが良い。 大抵のケースで保障できる → これは使ってはいけない、条件が付いた時点で保障できていない。
- 387 名前:デフォルトの名無しさん [2015/08/19(水) 09:01:52.31 ID:8XFwGYsL.net]
- 再帰は本質的に危険なので、教科書的にもループを基本にするべきではないだろうか。
逆に言うと、再帰で説明する教科書は、既に古いので使うべきでない。 20世紀の教科書。
- 388 名前:デフォルトの名無しさん [2015/08/19(水) 09:04:29.34 ID:8XFwGYsL.net]
- こういった議論でわかることは、最近の素晴らしい言語は、問題点の
議論を避けている。 結論が出るまで使わないほうが良い。
- 389 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 09:36:58.20 ID:3Ipmhs8Y.net]
- >>382 再入可能なコードは本質的に危険ということですか?
- 390 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 10:38:04.52 ID:qmnFr7bU.net]
- 再帰云々の議論をしている最中に関数型言語を持ち出してくる奴はキチガイ。
関数型言語なんて再帰キチガイが再帰を正当化するために作り出した言語で あって、逆に言えば関数型言語でない限り再帰に正当性は一切ない。 再帰キチガイは再帰に問題がありまくることを知っているからこそ、再帰を 満喫するために関数型言語なんていう
- 391 名前:キチガイ非効率言語を作ったんだから、
そこに収容されていて、一般論のスレに出てくるな。 [] - [ここ壊れてます]
- 392 名前:デフォルトの名無しさん [2015/08/19(水) 10:55:26.78 ID:N4waeMow.net]
- うわあ手続きキチガイだ
- 393 名前:デフォルトの名無しさん [2015/08/19(水) 11:13:42.96 ID:h1yQg/qV.net]
- 要するに反論できないから関数型言語を議論から除きたいと
- 394 名前:デフォルトの名無しさん [2015/08/19(水) 11:17:04.81 ID:irPHrK71.net]
- >>385
そうですね。 >>384 最近のライブラリが歳入可能性に言及するのは、スレッド安全に関連する話です。 関係ない話題をうまく混ぜ込むのが最近のトレンドですが、ム板でやると 馬鹿だと思われますよ。
- 395 名前:デフォルトの名無しさん [2015/08/19(水) 11:19:08.64 ID:irPHrK71.net]
- >>387
関数型言語は言語が再帰を避けてくれるから安全だと言いたいんですよね? 言語が避けてくれるのは、再帰が危険だからですよね?
- 396 名前:デフォルトの名無しさん [2015/08/19(水) 11:22:24.20 ID:irPHrK71.net]
- 関数型言語自体が、まだ結論の出ていないものだと思います。
威勢の良い宣伝は良くあります。 それはどの言語でも経験したことです。 例えばJavaはC/C++のおよそ20倍高速だった時代もあったのです。 現在は、関数型言語がC/C++のおよそ100倍高速なのです。 従っていずれ1/100になるでしょう。
- 397 名前:デフォルトの名無しさん [2015/08/19(水) 11:28:11.15 ID:irPHrK71.net]
- C++は良く利用される以前、Cの二倍遅く、Cの二倍のメモリーを使うと言われていました。
これがC++が使われるようになった理由の一つです。 Objective-Cは逆に、Cの二倍速く、Cの二倍省メモリーだったのです。 従ってその時点でObjective-Cは負けていました。 過剰な宣伝が通用するのは、誰も使っていなかったからなのです。 関数型言語がC/C++の100倍まで高速化したのは、本当の本当に誰も使っていないからでしょう。
- 398 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 12:45:01.27 ID:yS+hRb+C.net]
- >>385
うまいことを言う! これコピーして保存しとくぜ。
- 399 名前:デフォルトの名無しさん [2015/08/19(水) 23:06:26.12 ID:EEfFXLQD.net]
- 威勢の良い宣伝も糞も実際に使われてるだろ
- 400 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 06:59:05.01 ID:cFwOLAtj.net]
- スカトロを基準にして
うんこは食べ物ですって言うようなもん
- 401 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 10:35:31.02 ID:PsQjKp/h.net]
- jbbs.shitaraba.net/netgame/14889/
ここに「おはむぅ('ω'`)」って書きこんで
- 402 名前:デフォルトの名無しさん [2015/08/20(木) 12:12:44.84 ID:5WCLlVT0.net]
- >>394は発達障害
- 403 名前:デフォルトの名無しさん [2015/08/20(木) 17:13:17.66 ID:5F2FSsFe.net]
- 仕事でscalaとかscalaZとか使っとるから再帰や関数型が非実用的って言われると??ってなる
- 404 名前:デフォルトの名無しさん [2015/08/20(木) 17:14:14.66 ID:5F2FSsFe.net]
- あと別にそんなに高速性強調されるか?
- 405 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 17:42:02.04 ID:vSASgIXr.net]
- オレ、 「再帰関数が好き」って言ったら、 笑う?
- 406 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 17:42:58.19 ID:2qNm8QiI.net]
- >>397-398
関数型でも単純再帰はgotoみたいなプリミティブな構造だから 構造プログラミングにおけるwhileやforに相当するrecursion schemes使えって言われてるじゃん (例:catamorphismはfoldに相当するなど) recursion schemes含めて再帰が有用というなら妥当するけど、どういう論旨で再帰が有用とおっしゃる?
- 407 名前:デフォルトの名無しさん [2015/08/20(木) 20:45:39.40 ID:5WCLlVT0.net]
- 無理にfold使って書くより単純な再帰使うほうがわかりやすいなんて幾らでもある
foldやmap使えってのを素人向けに強調するのは構わんが、行き過ぎるのも愚劣
- 408 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 21:03:03.09 ID:2qNm8QiI.net]
- 残念ながらfoldやmapが使えるなら常に再帰よりそちらを使ったほうがよいと言い切れる
なぜなら再帰で書いた関数は変更に弱いから おもちゃみたいなコードしか書かないなら別だがね
- 409 名前:デフォルトの名無しさん [2015/08/20(木) 22:00:29.18 ID:5WCLlVT0.net]
- >>402
>なぜなら再帰で書いた関数は変更に弱いから >おもちゃみたいなコードしか書かないなら別だがね はあ?
- 410 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 00:21:00.76 ID:IS5nxfT5.net]
- 一生ひとりでサンプルプログラム書いてろ
迷惑だから社会に出てくんなよ
- 411 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 00:25:28.79 ID:D+2gPP3C.net]
- >>400
基本的には再帰よりも高階関数というか型クラスに定義してある汎用的な関数を使ったほうがいい 同じ事ができるならより弱い力のものを使ったほうがいいし(monadよりapplicative,applicativeよりfunctor) が型クラスのインスタンス作る時に再帰で実装する時はあるよ
- 412 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 00:31:28.66 ID:D+2gPP3C.net]
- まぁところによりけりでscalaの標準ライブラリのコンテナのコードなんて
while、再代入、ダウンキャストしまくりでとても関数型プログラミングとは言えない 利用者にとってはライブラリが関数型プログラミングで実装してあるかどうかよりも それを使って関数型プログラミングできる方が重要なんだからいいけど
- 413 名前:デフォルトの名無しさん [2015/08/21(金) 03:02:31.30 ID:wrsjniww.net]
- 日常業務で使ってるが、無理にfoldrで書いたりせずに
普通の再帰で書くことは少なくないしお互いに読みやすい fold厨とポイントフリー厨は同じ箱
- 414 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 09:15:46.95 ID:TIO5PnJE.net]
- >>397
何のお仕事?
- 415 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 12:24:12.68 ID:+b9Sq2lj.net]
- 簡単なアルゴリズムも書けないくせに何でもほいほい言語学習に飛びついて尖った知識が身につかない奴を見ると腹が建つ
haskellで探索アルゴリズムも書けない奴はhaskellをいじるのはまだ早い
- 416 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 16:54:57.68 ID:0U24jQiQ.net]
- >>409 すれ違い。消えてよし。
- 417 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 17:05:56.55 ID:cNm3l2b6.net]
- 探索アルゴリズムなら高校のころ、
インターネットが普及してない時代に C言語で実装したことがあるからなぁ。 わざわざ言語変えて実装するまでもないかな。
- 418 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 19:59:06.06 ID:sO1LNJ7K.net]
- 言語、ツール、OS、デザインパターンみたいな道具や手法に拘るやつで
凄いと思えるやつに会ったことがない ただの手段で目的じゃねーからな 目的を達成するために適したものを選んで使うのが道具
- 419 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 20:11:40.29 ID:D0T0zJ3M.net]
- >>412 C/C++でループだけに徹して書く人は凄いと思うけど。
普通だったらもっと高級言語使って、再帰も拘らず自由に使って 楽しようとするでしょう。
- 420 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 20:23:54.14 ID:DXj+sr9D.net]
- 再帰を嫌う人って、抽象化が苦手なんだろうね
フィボナッチ数列を例にとると、初項から順番にループを使って計算させることは簡単だけど、 そこから f(n) = f(n-1) + f(n-2) という数式に落とすのが苦手という感じ
- 421 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 20:25:32.36 ID:106+9rwN.net]
- でも一般項で直接計算した方が速くね?
- 422 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 20:29:42.52 ID:DXj+sr9D.net]
- >>415
直接計算した方が速いよ でも抽象化はバグを作り込みにくくすることを目的にしてるからね 目的が違うとしか言いようがない ガベージコレクタだってそうさ プログラマにメモリ管理をやらせないようにしてバグの源を減らしているんだが、 ガベージコレクタが走ってる間は固まってしまうというデメリットがある
- 423 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 20:37:23.27 ID:106+9rwN.net]
- そこで関数型プログラミングですね判ります
- 424 名前:デフォルトの名無しさん [2015/08/21(金) 21:25:21.72 ID:w5MKuYb1.net]
- C/C++の時代はもう終わったんだよ。
GUIならJavascriptの時代だし、サーバーサイドならHaskell一択。 まあそんな時代。 そういうわけで、ウェブブラウザをHaskellで、ウェブサーバを
- 425 名前:Javascriptで
書いてみよう。 プロの皆、頼んだよ。 [] - [ここ壊れてます]
- 426 名前:デフォルトの名無しさん [2015/08/21(金) 22:11:12.63 ID:uW+oAt+B.net]
- ブラウザをrust
サーバーをscalaで書こう
- 427 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 22:17:46.51 ID:gulw8KQa.net]
- C/C++否定するならGHCのruntimeをhaskellで書きなおしてからにしろ。
- 428 名前:デフォルトの名無しさん [2015/08/21(金) 22:22:10.87 ID:MAihWaWV.net]
- >>420
ブラウザをHaskellで書こう。
- 429 名前:デフォルトの名無しさん [2015/08/21(金) 22:29:51.21 ID:XU9Q1w5t.net]
- >>358
バカはお前だハゲ。 再帰のプログラム見てみろよ。 while (l < h) { if (arr[l] < piv) { l++; } else if (arr[h] >= piv) { h--; } else { swap(arr,l,h); } } 思いっきりループ使ってんじゃねえかwwww
- 430 名前:デフォルトの名無しさん [2015/08/21(金) 22:31:45.44 ID:XU9Q1w5t.net]
- >>355
スタックを使って何が悪い。 ループとスタックこれがハードボイルド。 再帰はただのチンカス。
- 431 名前:デフォルトの名無しさん [2015/08/21(金) 23:18:43.29 ID:kMLZ+IBA.net]
- スタック使ったらスタックオーバーフローするじゃないか!!!
スタック使っといて再帰ダメとはなんだ!!! とか思ったんじゃないの。
- 432 名前:デフォルトの名無しさん mailto:sage [2015/08/21(金) 23:36:53.53 ID:D+2gPP3C.net]
- >>408
アドテク
- 433 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 00:38:22.30 ID:xKKBKjQe.net]
- スタックオーバーフローするってよりも
リソースの上限見積もりをしない事が問題なんだよな 再帰使ってもリミッタかけて上限界保障すれば別にいいけど 上限下限当ててくと見積もりにくさやパフォーマンスの超劣化が表面化してくるんだよなぁ
- 434 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 01:32:21.16 ID:B3Y3H6bu.net]
- >>412
> 言語、ツール、OS、デザインパターンみたいな道具や手法に拘るやつで > 凄いと思えるやつに会ったことがない 単にお前が凄いやつにあったこと無いだけだろw お前の言う凄いやつが誰か知らないから、 有名人でいいや。 凄いやつで、言語、ツール、OS、デザインパターンに 拘らないと言ってる奴いるか?
- 435 名前:デフォルトの名無しさん [2015/08/22(土) 08:06:55.74 ID:qggPju08.net]
- それはバトルプログラマー山田のことだな。
- 436 名前:デフォルトの名無しさん [2015/08/22(土) 08:46:01.92 ID:4IPZDgMf.net]
- >>427
>>412は会った事がない。と言ってるだけで、存在しないとは言ってない。 言いがかりつけないように。
- 437 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 09:04:25.73 ID:xKKBKjQe.net]
- 開発に何を使うかより
製品の性能重視したほうがいいよ バグ発生率、実行性能、メモリサイズ、消費電力、メンテナンスコスト こーいうの数値化して客観的に比較して現実と向き合ったほうがいいよ
- 438 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 09:42:53.71 ID:P/XTDL5m.net]
- すごい人ほどこだわるんだよな
ただ、すごい人はこだわりを外れたとこでもやっぱりすごいんだけど
- 439 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 11:28:59.69 ID:B3Y3H6bu.net]
- >>429
だから、あったことがないだけだろ。って 書いてあるだろ。 例えば、俺だってシューズに拘るやつで 凄いと思えるマラソンランナーに会ったことがない。
- 440 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 11:31:34.10 ID:B3Y3H6bu.net]
- >>430
> バグ発生率、実行性能、メモリサイズ、消費電力、メンテナンスコスト > こーいうの数値化して客観的に比較して現実と向き合ったほうがいいよ そんなことはわかってる。 どうやってそれを数値化し、どうやってそれを解決するか。 それを口に出して言うことが重要だ。 で、君は、どうやればいいと思う? 「根性で頑張る」は手法ではないよ。
- 441 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 15:57:53.79 ID:gOdxnhpv.net]
- 再帰について話し合えよ。
クソどもが
- 442 名前:デフォルトの名無しさん [2015/08/22(土) 15:58:17.75 ID:Nzlin5Sx.net]
- 再起不能
- 443 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 16:17:27.41 ID:4AYLR5mV.net]
- こだわりも何も再帰を使っていけないのは世界のルール!
鉄則!プログラミングの初歩の初歩! 再帰を気にせずに使ってしまうのは ただの趣味プログラマ。
- 444 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 19:12:47.71 ID:KyZWN2Ug.net]
- どういう話になってんのか知らんけど
ツリーコントロールにバインドするデータは再起で扱うしかないだろ
- 445 名前:デフォルトの名無しさん [2015/08/22(土) 19:57:12.11 ID:4IPZDgMf.net]
- 数学的帰納法で落ちこぼれたガイジが暴れてるだけ。
- 446 名前:デフォルトの名無しさん mailto:sage [2015/08/22(土) 22:48:47.92 ID:8n3Hy4+Y.net]
- 数学ぽいと思って使っちゃうのね
- 447 名前:デフォルトの名無しさん [2015/08/22(土) 22:51:07.69 ID:XZXv5ALV.net]
- マトモに大学で数学教育受けたことあると再帰に抵抗がなくなるのは事実
- 448 名前:デフォルトの名無しさん [2015/08/22(土) 23:39:22.15 ID:Nzlin5Sx.net]
- 深さ方向の見積もりが常に出来るなら再帰は便利
見積れないなら危険だから使わないか例外吐くようにするべき ループと等価だからループで置き換えろっていう人もいるが ループにしたからと言って危険が0になる訳ではなく どのみち例外を吐く必要がある
- 449 名前:デフォルトの名無しさん [2015/08/22(土) 23:45:35.99 ID:XZXv5ALV.net]
- それは再帰の問題じゃなくて例外処理の問題
- 450 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 00:46:58.86 ID:cJWS/2ha.net]
- 再起で扱うしかないなんて発想が出ること自体
数学的論理的思考を欠いている。 情報処理のまともな思考力があれば ループにし、かつ危険を0にしたコードを作成すべき。
- 451 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 01:57:15.79 ID:vCSJ96fF.net]
- 再帰に親でも殺されたのかこいつは
- 452 名前:デフォルトの名無しさん [2015/08/23(日) 01:59:37.69 ID:myL1fwDZ.net]
- 計算の本質が再帰にあることを知らない子はねえ…
- 453 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 03:53:30.61 ID:dUB2+H1B.net]
- 抽象化ができない子なんだろ
- 454 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 08:40:52.24 ID:F/ISrncw.net]
- 関数呼び出しコンパイルして出てくるのはジャンプなんだから
手間は別としてループと条件分岐に置き換えられないわけがない ループのほうが常に簡単って言ってるやつは もっと深いアーキ寄りの事を考えてるから簡単と感じるんだろ 抽象化や数学レベルの話ではない
- 455 名前:デフォルトの名無しさん [2015/08/23(日) 09:09:45.85 ID:hZLJ7+aO.net]
- >抽象化や数学レベルの話ではない
そもそも等価なんだから 機械的に置き換える万能な方法があるから 「簡単だ」って言ってるんじゃね
- 456 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 09:36:44.01 ID:4UX4HcJn.net]
- 最底辺はループやジャンプで。
それより上位層になると人間様が読み書きし易い再帰で(最適化は底辺に任せる)。 もっと上位になるとループも再帰も使わず、誰かが用意した高階関数を使うだけ。 ってので合ってる? 自分で高階関数書くときは、ほとんどループで、たまに再帰。
- 457 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 09:47:58.57 ID:dUB2+H1B.net]
- >>447
> もっと深いアーキ寄りの事を考えてるから簡単と感じるんだろ そんなのは本来は機械にまかせること 高級言語はそういう考えを排除するようにできてきたんだからね アーキのこと考えてやるならアセンブラ使ってレジスタのことでも考えておけばいい
- 458 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 09:53:47.88 ID:F/ISrncw.net]
- 世の中にはハード屋に
理論上最高性能の高級関数を作ることを要求される最底辺が居てな オプソの大半は環境依存なくしてぬるく作ってあるから 実装としてはまだ最底辺ではないよ
- 459 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 09:58:49.19 ID:btbbls/X.net]
- 再帰が問題なのはスタックオーバーフローこの一点のみだよ。
- 460 名前:デフォルトの名無しさん [2015/08/23(日) 10:35:42.23 ID:hZLJ7+aO.net]
- スタックを使わずに再帰すればいいだけ
- 461 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 15:29:52.83 ID:vCSJ96fF.net]
- 全部トランポリン化しよう(提案)
- 462 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 15:51:18.07 ID:FI0qqD1g.net]
- スタックって今でも固定なの?
最近は動的にスタック領域増えたりしないの?
- 463 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 16:21:24.92 ID:nWiiCp/4.net]
- 保守性と可読性が高いならどんなコード書いてもいいよ
再帰だろうとgotoだろうとかまへんよ
- 464 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 17:58:27.10 ID:2tV8XcQZ.net]
- コンピュータの本質は関数じゃなくてオートマトンなんだけどな
- 465 名前:デフォルトの名無しさん [2015/08/23(日) 19:17:08.80 ID:myL1fwDZ.net]
- >>457
計算論の話なら抽象的なレジスタマシンでミニマルな計算可能関数のセットを 作り上げた後はレジスタマシンのことはまったく気にしないものだけどな
- 466 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 20:04:00.55 ID:5
]
- [ここ壊れてます]
- 467 名前:Eh/eQsv.net mailto: 再帰を毛嫌いするのは学が足りない
破壊的代入を毛嫌いするのは経験が足りない [] - [ここ壊れてます]
- 468 名前:デフォルトの名無しさん [2015/08/23(日) 20:16:52.93 ID:c9xDZ4H5.net]
- >>459
どっちつかずのタマムシ野郎はやる気が足りない?
- 469 名前:デフォルトの名無しさん [2015/08/23(日) 20:17:46.05 ID:c9xDZ4H5.net]
- 再帰で実装するクイックソートって全然クイックじゃないからな
あれクイック詐欺だからな
- 470 名前: ◆QZaw55cn4c mailto:sage [2015/08/23(日) 22:05:58.40 ID:GHcBJPT0.net]
- >>461
?? でも,再帰は非再帰よりも遅いかもしれないようだね‥意外だ codepad.org/4B8PijgI 再帰 codepad.org/AGfYeUmV ループ
- 471 名前:デフォルトの名無しさん [2015/08/23(日) 23:08:33.07 ID:c9xDZ4H5.net]
- >>462
だぁかぁらぁ再帰でループ使ってんじぇねえぞカスこら for (;;) { while (f(pi, pivot) < 0) pi += size; while (f(qi, pivot) >= 0) qi -= size; if (qi < pi) break; swap(pi, qi, t, size); } 全部再帰で実装しろや卑怯者
- 472 名前:デフォルトの名無しさん mailto:sage [2015/08/23(日) 23:18:14.86 ID:cJWS/2ha.net]
- 高速処理を再帰で実装したらダメなんてことも知らんのか。
プログラミングの常識を欠き過ぎ。
- 473 名前: ◆QZaw55cn4c mailto:sage [2015/08/23(日) 23:28:45.86 ID:GHcBJPT0.net]
- ふーん,常識なんだ‥
ニ方向に再帰する構造をループに書くのは大変だな‥ 平衡ニ分木なんかどうすればいいのだろう‥
- 474 名前:デフォルトの名無しさん [2015/08/24(月) 00:02:19.68 ID:lwCfvpYi.net]
- >>465
FreeBSDもLinuxも.NETもJavaも二分探索木(赤黒木)はループで実装されとりますがな
- 475 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 00:21:55.88 ID:rSFKQba3.net]
- >>458
こういうバカ
- 476 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 09:13:29.48 ID:pjiRa/zc.net]
- >>422 >>423 を絶滅危惧種として虚勢して動物園にいれとけ
- 477 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 09:13:40.03 ID:X6qu577D.net]
- >>465
スタックに積むコストを舐めすぎている
- 478 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 10:54:15.45 ID:r4N2Q7ij.net]
- >>462
そのコードじゃ重くて当然だと思うが 1処理単位のmalloc呼び出しが再帰は3回、ループは1回 そこ同じ数に直せばほぼ変わらないと思う
- 479 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 13:27:36.75 ID:nAv/Kj8Z.net]
- ループ処理方式では、メモリの確保・開放は最初と最後のみにすべき。
途中の処理でメモリの確保・開放をしないことで、望ましい高速処理が実現される。
- 480 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 15:15:24.35 ID:zrEdzFeo.net]
- スタックも再帰前にあらかじめ確保しておけば最強
- 481 名前: ◆QZaw55cn4c mailto:sage [2015/08/24(月) 21:17:22.61 ID:YG1kZeuQ.net]
- >>470
なるほど
|

|