- 1 名前:名無しのプログラマ [2015/08/09(日) 17:46:33.69 ID:Icb40LOY.net]
- for,while使うの嫌いで基本的に再帰多用するんだが、だめなの?
皆から敬遠されてる気がする
- 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
なるほど
- 482 名前: ◆QZaw55cn4c mailto:sage [2015/08/24(月) 21:20:07.14 ID:YG1kZeuQ.net]
- 再帰版(かきなおし)codepad.org/U7f45Ah0
ループ版(再掲載)codepad.org/xvNqmIcZ 若干再帰版の方が早いようだ,スタックポインタはレジスタ一個で管理できるから軽いんだね
- 483 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 21:55:55.71 ID:nAv/Kj8Z.net]
- ループ処理方式の長所は
1処理単位のmalloc呼び出しを無しにできることなんだから あってはダメ
- 484 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 00:51:04.35 ID:uonxIY7X.net]
- そりゃ高速処理を突き詰めればループの方がいいに決まってる
再帰は問題をより小さい問題に分割することによってアルゴリズムを分かりやすくして バグを混入しにくくすることが目的なんだから、速度はハナから求めてないしね
- 485 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 01:42:50.39 ID:pfa9oRBx.net]
- 逆に言えば、再帰を使ってもアルゴリズムが
わかりやすくならないなら使う意味もないし、 単に速度が遅くなるってだけなわけさ。
- 486 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 01:53:24.89 ID:bwlYR2I5.net]
- まぁでもあれだよな
リストに関して言えば、リンクリストは重いので配列を使う 配列を使うと自ずとループ処理が多くなるわな
- 487 名前:デフォルトの名無しさん [2015/08/2
]
- [ここ壊れてます]
- 488 名前:5(火) 03:17:22.19 ID:36oEPfes.net mailto: 配列がリストの代替になるわけがないだろ
データ構造としての性質がぜんぜん違う [] - [ここ壊れてます]
- 489 名前:デフォルトの名無しさん [2015/08/25(火) 03:47:16.58 ID:dXp7EQvt.net]
- 再帰自体がバグ。
- 490 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 07:19:29.79 ID:bwlYR2I5.net]
- >>479
そのとおり ほとんどの場合で配列の方が早い だから配列を使う
- 491 名前:デフォルトの名無しさん [2015/08/25(火) 09:33:09.51 ID:36oEPfes.net]
- はあ。配列のコストも理解してないとは…
なんでマトモにプログラム書いたこともないような奴ばっかりなんだ
- 492 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 09:47:35.65 ID:zI10HmeA.net]
- >>482
バカはおまえだけ
- 493 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 15:43:56.61 ID:YISO+qUP.net]
- >>482 「俺、息の吸い方知ってるんだよ。」っていう君みたいなのを誰も相手にしていないだけだ、「息の吸い方も分かりませんが、狩りがしたいです!」っていうほうがマシ、あるいは釣りであることを悟れ
- 494 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 19:31:30.11 ID:eVT/tzv+.net]
- >>484
いやそれはおかしい例えだろ そこで師範代から正しい呼吸法を学ぶ流れだぞ
- 495 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 20:16:14.30 ID:YISO+qUP.net]
- >>485 この板やネット社会のどこに師範がいるんだよw必要な情報は全部上がっているんだよ、それを共有するかしないかだろ
- 496 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 20:34:31.94 ID:bwlYR2I5.net]
- つまりお前らのような存在は、
リンクリスト使わずに配列使っとけば良いってこと 配列使っとけば、ループ処理に再帰を使おうって、 考えも浮かばなくなる ほとんどの場合で良好なパフォーマンス 可読性もバッチリ
- 497 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 20:44:07.68 ID:uonxIY7X.net]
- > 可読性もバッチリ
ここは違うよね ループを使うということは手続きを追わないといけない 再帰なら定義をそのまま書ける どちらが可読性がいいかどうかは言わずもがな
- 498 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 20:52:22.67 ID:zI10HmeA.net]
- 可読性は比較の問題じゃあない。
非実用的な再帰方式は採用できないのだから 実用的なループ方式を使うしかない。 ループ方式のコードは、より複雑になるとしても 読むことが困難なものではない。 プログラマに少し経験があれば、 再帰方式から安全で高速処理のできるループ方式に 自分で変更できるレベル。
- 499 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 20:55:10.03 ID:bwlYR2I5.net]
- >>488
配列のループに再帰を使うのwwwww それって読みやすいわけ?
- 500 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 20:57:06.79 ID:uonxIY7X.net]
- >>489
> 再帰方式から安全で高速処理のできるループ方式に > 自分で変更できるレベル。 変更できてもその結果バグを埋め込んだりしたら無意味 そうならないために可読性は重視されるんだから
- 501 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 21:02:19.58 ID:bwlYR2I5.net]
- 配列のループに再帰使うのは、可読性が良いわけ?
俺はリンクリストなんぞ使わずに配列使えっていってるわけで ランダムアクセスできて便利
- 502 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 21:05:07.20 ID:bwlYR2I5.net]
- しかも今風の言語だと、大体コレクションがあって、
range-based for が有るのに、 何でわざわざ再帰で書くwww
- 503 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 22:16:19.86 ID:zI10HmeA.net]
- >>491
プログラマに少し経験があれば、 分かりやすくループ方式に直せるはず。 バグを埋め込まないレベルで 埋め込まれたバグが同僚が発見しやすいレベルで
- 504 名前:デフォルトの名無しさん mailto:sage [2015/08/25(火) 22:36:15.41 ID:JZwUbwZb.net]
- 最近の高級言語はforeach楽すぎよね
c/c++はくそいんだけど どうせガチの実装するときだからあっても使わないどころか ユニットで固めるから可読性とメンテナンス性はガン無視だわ
- 505 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 01:11:58.96 ID:fE8RXalP.net]
- foreachはクソイのでmapとかfilterとか使おう
- 506 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 01:31:34.12 ID:5P6ATqZc.net]
- 再帰はクソイのでmapとかfilterとか使おう
同じ理論が成り立つから無意味だ
- 507 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 01:34:29.40 ID:fE8RXalP.net]
- 結局適切な使い分けが必要って話になる
- 508 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 01:52:36.91 ID:eIiWuCWx.net]
- C++にもfor_eachあるし、再帰でmap使っても再帰になるだろ…
- 509 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 03:45:39.29 ID:tWuWD3CH.net]
- >>475
>>474 でみたように,
- 510 名前:クイックソートのような再帰アルゴリズムをループ処理で記述すると malloc()/new の発生は回避できない []
- [ここ壊れてます]
- 511 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 03:46:52.92 ID:tWuWD3CH.net]
- >>476
>>474 でみたように「ループ処理の方が早い」とは必ずしもいえない. 再帰で記述したほうが速度が出る場合も結構あるのでは?
- 512 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 03:49:21.29 ID:tWuWD3CH.net]
- >>482
最近急に「std::vector 一択だ!」論者が増えているようで‥
- 513 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 05:07:16.18 ID:CDX3RzQS.net]
- >>500
ぼけ! まだ書き直してねえじゃねえか。 さっさと1処理毎のメモリ確保解放をしない ループ処理の通常版に直せ。 これを知らんのはお前が病的な世界にいるからだ。
- 514 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 07:31:12.39 ID:pCUEXLgh.net]
- >>501
呼び出しオーバーヘッド削り込む実装しなきゃ ループのほうがはやくはならんよ OSSでもまともなのはそーいう実装になってるよ
- 515 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 07:39:26.46 ID:nL2sda9W.net]
- >>500
> >>474 でみたように,クイックソートのような再帰アルゴリズムをループ処理で記述すると malloc()/new の発生は回避できない 回避できるでしょ? 最初っから必要になる最大メモリを確保すればいいんだよ。 最大がわからないなら、 そのサイズはスタックの最大メモリと同じ量でいい。
- 516 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 07:45:06.17 ID:tWuWD3CH.net]
- >>503
ちゃんと,処理の頭と終わりで malloc()/free() するだけの構造にしたよ ニ方向に再帰するクイックソートで,処理中にスタックに出し入れするから, その分の malloc()/free() を使うのは不可避 >>504 まあそういうことだ‥ このスレのはじめのほうでは再帰のオーバーヘッドはかなり高いことになっていたが, 実はそうでもない
- 517 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 07:45:54.80 ID:tWuWD3CH.net]
- >>505
>スタックの最大メモリ ってなんだい?C で説明してくれ
- 518 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 08:06:15.93 ID:CDX3RzQS.net]
- >>506
>ニ方向に再帰するクイックソートで,処理中にスタックに出し入れするから, >その分の malloc()/free() を使うのは不可避 その分の malloc()/free() を使うなボケ 処理毎のメモリ確保解放をしないのが業界標準だ 極端に低レベルなコードを作り出してソートを語るな
- 519 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 09:03:59.69 ID:nL2sda9W.net]
- >>507
スタックオーバーフローしたときの スタックで使用しているメモリ量のことだよ。
- 520 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 15:30:14.05 ID:3EJSkE06.net]
- 続くねぇ。このページで終わる話じゃないの?
https://ja.wikipedia.org/wiki/分割統治法
- 521 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 20:04:00.33 ID:1FIsj9f5.net]
- 再帰を使えば分かりやすく書ける
ループを使えば高速化できる トレードオフなだけだよね 高速化が必要ならループ使えばいいし、そうでもないなら再帰で分かりやすく書けばいい 前提条件がないのにどっちがいいとか決められる話じゃない
- 522 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 20:57:30.21 ID:tWuWD3CH.net]
- >>511
その常識を覆す結果,すなわち ・再帰を使うほうが全般的に軽い, ・ループは分かりやすくない上におもったより重い という結果が出ているんだよ
- 523 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 21:01:56.66 ID:nL2sda9W.net]
- >>519
訂正 再帰を使えば分かりやすく書けることもある。 ループを使ったほうがわかりやすいことも有る。 ループを使えば高速化できる。
- 524 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 21:27:00.60 ID:CDX3RzQS.net]
- >>512
そんなバカ言ってるのはお前だけ。 さっさと世間で使われているクイックソートのアルゴリズムがどうなっているのか学習しろ。 このスレでさんざん多くのレスで非難されているのに、現実を理解できないお前は重病。
- 525 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 00:24:39.98 ID:D5iVdV3D.net]
- クイックソートをピュアに実装する事ってなくって
分割で要素数減ったら別アルゴに切り替えるでしょ だから関数呼び出しのオーバーヘッドの影響が小さくなるのよ それもデータ多いと遅いから ミッションクリティカルに大量のソート回す場合は パラのradixマージじゃないのか おれはこう思ってたんだけど俺の認識間違ってる?
- 526 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 02:53:00.07 ID:rEYgAb/R.net]
- >データ多いと遅いから
まともなループ版
- 527 名前:のクイックソート使えばいいのに []
- [ここ壊れてます]
- 528 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 03:36:13.50 ID:4wYo+P+Y.net]
- >>514
クィックソートするのに,データ数の前提をたててその分のメモリを先に確保するのか? それが世間でやっていることなのか? Cのライブラリ関数 qsort() で行われていることなのか?
- 529 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 03:40:39.00 ID:zsRIAfpU.net]
- 二つのメモリ内容の
入れ替えしか行ってないのに、 なんで別にメモリを確保しなきゃいかんのだ?
- 530 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/08/27(木) 03:48:48.52 ID:oqQcnINP.net]
- 二重再帰のお題:
int f(int x,int y) { if (x > 0)return f(x-1,y)-1; if (y > 0)return f(x+1,y-1)+3; return 1; } さて、f(3,8)はいくつ?
- 531 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/08/27(木) 03:52:04.42 ID:oqQcnINP.net]
- 再帰は人工知能と関係がある。
- 532 名前:デフォルトの名無しさん mailto:sage [2015/08/27(木) 10:07:26.43 ID:1OqAD7+d.net]
- 再帰は人工知能の研究のためのもの
ソースコードとその処理結果の組み合わせを見るもの 実用的なプログラミングにはC++とか他の言語を使う
- 533 名前:デフォルトの名無しさん [2015/08/27(木) 23:36:19.60 ID:3Gk4Wjfj.net]
- 2週間くらい見てなかったけどずいぶんまともになったね。
MISRA-C だの 2chコーディング規約だのと叫んでた人達はどこに行ったの? >>517 gcc qsort.c でググれば出てくるから見てみたらどうかな。
- 534 名前:デフォルトの名無しさん [2015/08/27(木) 23:44:42.40 ID:3Gk4Wjfj.net]
- ごめん、間違えた。URL 書くよ。>>163 に書かれてるのと同じだけど。
https://github.com/lattera/glibc/blob/master/stdlib/qsort.c
- 535 名前:デフォルトの名無しさん [2015/08/28(金) 00:07:34.86 ID:X6i2EJ+K.net]
- glibc qsort.c
でググればいいらしい。
- 536 名前:デフォルトの名無しさん [2015/08/28(金) 01:56:03.91 ID:5JQ0ubd6.net]
- クイックソートは問題を分割して各々を解くだけだからループでも簡単なんだよ。
再帰処理をループにしても読みにくくならないって言う人は、竹内関数を再帰呼び出し無しで書いてみること。 書けない人は議論に参加する資格無し。
- 537 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 02:00:35.89 ID:k07is2fO.net]
- 竹内関数は実際には使われないので何とも
実際にもっとも使われるデータ構造は配列です 配列のループに再帰を使うのはナンセンスです
- 538 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 05:01:09.44 ID:Ox2JHydA.net]
- >>525
まだ勘違いしてるの? ループでも簡単なものを わざわざ再帰で書くんじゃねーよって 話をしてるんだが。
- 539 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 06:01:37.78 ID:uG+DCu7f.net]
- >>522
man ばかりでてくるんだけど‥
- 540 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 10:15:07.18 ID:McJH/vOC.net]
- ループでも簡単なものを
わざわざ実用性のない再帰で書く 再帰キティ害は、どこまで病的なんだか・・
- 541 名前:デフォルトの名無しさん [2015/08/28(金) 21:21:58.14 ID:5JQ0ubd6.net]
- >>527
ループで簡単に書ける問題でも 再帰で「もっと」簡単に書けるなら再帰で書くよ
- 542 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 21:27:38.78 ID:McJH/vOC.net]
- >>530
脳みそ腐ってる 再帰のベンチマークでいつまでも遊んでろ
- 543 名前:デフォルトの名無しさん [2015/08/28(金) 21:30:07.36 ID:5JQ0ubd6.net]
- >>531
GOTOで簡単に書ける問題でも関数使うのと同じだよ
- 544 名前:デフォルトの名無しさん mailto:sage [2015/08/28(金) 21:33:32.50 ID:k07is2fO.net]
- もっともよく使うデータ構造は配列です
配列のループに再帰を使うのはナンセンスです
- 545 名前:デフォルトの名無しさん [2015/08/28(金) 21:35:35.21 ID:5JQ0ubd6.net]
- もっともよく使うデータ構造は木です
木の探索にループを使うのはナンセンスです
|

|