再起法... のスレッド詳細
削除依頼やバグ報告は メールフォーム にお願いします。個人情報、名誉毀損、侵害等については積極的に削除しますので、 メールフォーム より該当URLをご連絡いただけると助かります。
22/07/02(土)20:14:13 No.944880938
再起法難しいって聞いて身構えてたけどwhile文とほぼ同じじゃないこれ?
1 22/07/02(土)20:14:30 No.944881036
おっぱいそん!
2 22/07/02(土)20:14:40 No.944881118
「再帰」ね
3 22/07/02(土)20:15:39 No.944881538
難しいっていう処理もあらましだけならそんな難しいわけではないんだ 実際に使うぐらいの複雑さをもつと難しくなる
4 22/07/02(土)20:16:57 No.944882076
LISPだLISPをやれ
5 22/07/02(土)20:18:41 No.944882898
仕事ではツリー構造のデータ扱うときくらいしか再帰使ったことない
6 22/07/02(土)20:19:02 No.944883071
実際Cのコンパイラとかは関数の再帰呼び出しをループに書き換えたりする
7 22/07/02(土)20:19:37 No.944883343
サンプルでは難しくない 現場のスパゲティを見ると頭を抱える
8 22/07/02(土)20:20:17 No.944883636
>現場のスパゲティを見ると頭を抱える リファクタリングしよう!
9 22/07/02(土)20:20:27 No.944883719
終了条件を間違えててメモリ食い潰して暴走とか昔はあったけど 今はそんなことないのかな
10 22/07/02(土)20:20:58 No.944883973
再帰好きだけど普段はwhile文つかうな・・・
11 22/07/02(土)20:21:28 No.944884197
コールスタックを! 埋め尽くせ!
12 22/07/02(土)20:22:49 No.944884840
言うほど再帰って使うことないよ まあ再帰にしたほうがわかりやすくなる処理もあるけど
13 22/07/02(土)20:31:08 No.944888684
再帰って色々問題起こるしむしろ使うなって書かれてない?
14 22/07/02(土)20:32:01 No.944889104
再帰の方がいい例がわからない…
15 22/07/02(土)20:33:24 No.944889783
競技プログラミングとか以外で使うのか
16 22/07/02(土)20:33:33 No.944889843
コーディングテストとか競プロだとやたらと使わされる
17 22/07/02(土)20:34:35 No.944890313
フィボナッチ数列とか・・・
18 22/07/02(土)20:35:03 No.944890524
書くこと自体は難しくない 実際の処理を想定したときの煩雑さと可読性が完全に反比例するからクソ
19 22/07/02(土)20:36:29 No.944891144
木構造の下の方から順に処理するみたいなのは再帰で書いたほうが効率的だけど そういうのはライブラリにしといて賢い人が1回作るだけにするから 基本使わなくていいよ
20 22/07/02(土)20:36:39 No.944891232
コンパイラ書く時とか…
21 22/07/02(土)20:37:18 No.944891537
関数型言語だと再帰が基本だったりするけど手続き型言語だとあんまメリットは大きくはない印象がある
22 22/07/02(土)20:42:48 No.944893896
とりあえず末尾再帰にする気持ちを忘れるんじゃないぞい
23 22/07/02(土)20:43:56 No.944894373
末尾再起の形にするとwhileと対応する形になる 賢いコンパイラならこの辺自動でやってくれるけどたまにやってくれなくてスタック食い尽くして落ちる
24 22/07/02(土)20:44:01 No.944894401
pythonに可読性を求めてない なので仕事ではほぼ使わない
25 22/07/02(土)20:45:17 No.944895003
やたら複雑な入れ子状になってるジェネレータ文見たことあるけどあれも一種の再帰なんだろうか
26 22/07/02(土)20:45:30 No.944895110
>書くこと自体は難しくない >実際の処理を想定したときの煩雑さと可読性が完全に反比例するからクソ 別に反比例しなくない? 末尾再帰最適化かかるようにかけばいいだけでは?
27 22/07/02(土)20:46:26 No.944895571
明らかにループのが可読性悪いと思うけど再起のが可読性悪いってどういう奴だ?
28 22/07/02(土)20:47:19 No.944895962
複雑さってものによらない? フィボナッチとかなら繰り返しで問題ないけどマージソートとかは再帰関数じゃないと俺書けないぞ
29 22/07/02(土)20:48:09 No.944896338
可読性っつーより最終的に何が出てくるかわからないんだよな
30 22/07/02(土)20:48:58 No.944896720
関数Xの中で関数Yを呼んで 関数Yの中で関数XとYを呼んだりしたらわけわかんなくなる
31 22/07/02(土)20:49:00 No.944896740
>可読性っつーより最終的に何が出てくるかわからないんだよな それは単にアルゴリズムそのものが理解できてないだけじゃ無いのか?
32 22/07/02(土)20:49:26 No.944896932
ループ文で書くのが向いてる処理と再帰で書くのが向いてる処理を俺は区別できない
33 22/07/02(土)20:50:36 No.944897484
>関数Xの中で関数Yを呼んで >関数Yの中で関数XとYを呼んだりしたらわけわかんなくなる それは普通にその関数自体が分割の仕方がダメな奴では… ループでも筋が悪いよ
34 22/07/02(土)20:51:25 No.944897857
相互再帰っていう言葉があるくらいだからどうしてもそれが必要なタイミングとかがあるんじゃないだろうか
35 22/07/02(土)20:52:49 No.944898470
自己参照は別に普通じゃない
36 22/07/02(土)20:53:10 No.944898639
書くのは楽だし一概念一実装を守りやすいんだけど色々問題がね…
37 22/07/02(土)20:53:57 No.944898995
リエントラントとか排他とかよく分からねえんだけど!
38 22/07/02(土)20:56:01 No.944899942
>相互再帰っていう言葉があるくらいだからどうしてもそれが必要なタイミングとかがあるんじゃないだろうか 昔はそうだったけどtco考えたら条件分岐でやるべきだから筋悪いと思うね
39 22/07/02(土)20:57:04 No.944900421
再帰とかこんなん上手ぶって気持ちよくなりたいだけだろ…!
40 22/07/02(土)20:57:58 No.944900806
再帰のほうがロジック化とか数式化すんの楽だなーと思ったらSchemeとかMLとかでサクッと書いてテストしてからループに落としなおす
41 22/07/02(土)20:58:02 No.944900834
センサーから飛んできた信号を読んでグラフに表示して出力値変えて……って程度のプログラムしかしてないから「」の高度な用語がわからん エ「」ジニアがどんな機能を書いてるのかちょっと気になる
42 22/07/02(土)20:58:08 No.944900884
>リエントラントとか排他とかよく分からねえんだけど! リエントラントは引数以外に状態持たなきゃいいだけじゃない? というかそれ再帰関係ねえな…
43 22/07/02(土)20:59:08 No.944901330
>センサーから飛んできた信号を読んでグラフに表示して出力値変えて……って程度のプログラムしかしてないから「」の高度な用語がわからん >エ「」ジニアがどんな機能を書いてるのかちょっと気になる ここ半年コーディングは一切する機会がなかった ずっとドキュメント作成と管理しかできてない…
44 22/07/02(土)20:59:11 No.944901356
>再帰のほうがロジック化とか数式化すんの楽だなーと思ったらSchemeとかMLとかでサクッと書いてテストしてからループに落としなおす まあそれが一番無難だな ループにすると基本汚くなるけど
45 22/07/02(土)21:00:07 No.944901722
>>リエントラントとか排他とかよく分からねえんだけど! >リエントラントは引数以外に状態持たなきゃいいだけじゃない? >というかそれ再帰関係ねえな… まあ再帰関数はリエントラントにしとかないと死ぬけど…
46 22/07/02(土)21:02:45 No.944903007
>まあ再帰関数はリエントラントにしとかないと死ぬけど… 別にそんなこと無いよ再帰呼び出し時点で共有する何かの処理が終わって問題なけりゃいいだけだから リエントラントでなくても成立はする もちろん2つ呼んだら死ぬ
47 22/07/02(土)21:04:07 No.944903677
再帰はデータ大量の場合スタックが溢れる可能性もあるから実装できるなら通常実装がいいと思う
48 22/07/02(土)21:04:27 No.944903854
浅井先生のプログラミングの基礎と大堀先生のプログラミング言語の基礎理論読めば再帰もループもだいたい同じよってわかる そのあと五十嵐先生のプログラミング言語の基礎概念読んで手を動かすと末尾再帰Loveになる
49 22/07/02(土)21:05:15 No.944904217
再帰文はたまに使うよ メモリを再帰の度に新しく用意するからwhileとは違う
50 22/07/02(土)21:05:23 No.944904281
>再帰はデータ大量の場合スタックが溢れる可能性もあるから実装できるなら通常実装がいいと思う それは単に起動用の関数だけ用意しといて参照渡してデータにスタック使わなきゃいいだけでは…
51 22/07/02(土)21:05:34 No.944904376
loveとかはキモすぎる…
52 22/07/02(土)21:06:28 No.944904849
リソース少ない組み込みとかで使うとコールスタックがアッという間に溢れて死ぬ
53 22/07/02(土)21:07:42 No.944905553
今どきのPCで実行するなら雑に書いても平気かな?
54 22/07/02(土)21:08:13 No.944905830
まあ最大の段数は分かってる事が多いから バグじゃなければバグらない
55 22/07/02(土)21:08:26 No.944905926
>>再帰はデータ大量の場合スタックが溢れる可能性もあるから実装できるなら通常実装がいいと思う >それは単に起動用の関数だけ用意しといて参照渡してデータにスタック使わなきゃいいだけでは… データ構造のスタックじゃなくてコールスタックのことだと思われる
56 22/07/02(土)21:08:49 No.944906120
自分一人だけで書くなら好きなだけ使えばいいと思う
57 22/07/02(土)21:09:37 No.944906536
>リソース少ない組み込みとかで使うとコールスタックがアッという間に溢れて死ぬ それは処理系による TCO無効時にエラー出るやつもあるから
58 22/07/02(土)21:10:12 No.944906886
組込みだと再帰は禁止されてるから再帰で試作したコードをループ化するチケットが飛んでくる
59 22/07/02(土)21:10:13 No.944906894
データが再帰構造なので再帰関数でなめるってのは当然だし必要ならやる ループで書けるのを末尾再帰にする意味は俺にはよくわからん…
60 22/07/02(土)21:10:35 No.944907088
コールスタックを気にすると実態は再帰だけど一度呼び元に戻すとか謎の制御が入って死ぬ
61 22/07/02(土)21:11:30 No.944907602
>データ構造のスタックじゃなくてコールスタックのことだと思われる 変数使うスタックじゃないの? コールスタックはTCOかかれば消費しないよ
62 22/07/02(土)21:11:51 No.944907774
関数に突入するときに 終わったあとに戻ってくるための情報をスタックする必要があるけど それが10000段とか行くとjavascriptはパンパンになるっぽいので再起は不安だ
63 22/07/02(土)21:12:42 No.944908230
>リソース少ない組み込みとかで使うとコールスタックがアッという間に溢れて死ぬ 8bitCPUとか? 最初から静的メモリ設計してギリギリでメモリ管理してる?
64 22/07/02(土)21:12:47 No.944908277
>組込みだと再帰は禁止されてるから再帰で試作したコードをループ化するチケットが飛んでくる 正直やる事変わらないんだから自動変換とかできそうだよね queueとか作るだけだし
65 22/07/02(土)21:13:32 No.944908671
コーディングルールで再帰使っちゃいけないところもあるよね
66 22/07/02(土)21:14:20 No.944909085
全体サイズが分かんない(でもやばいほど大きくはない)枝を探索する時によく使う
67 22/07/02(土)21:14:21 No.944909086
そもそも使いたがる人が珍しいかと…
68 22/07/02(土)21:14:45 No.944909297
>>リソース少ない組み込みとかで使うとコールスタックがアッという間に溢れて死ぬ >8bitCPUとか? >最初から静的メモリ設計してギリギリでメモリ管理してる? ワンチップマイコンの組込みだとCPUは32bitでもRAMは64KBとか珍しくない…もっと少ないこともふつー さらにマルチスレッドにするとスレッドごとにスタックあてるのでスタックサイズ1KB以下とかふつー
69 22/07/02(土)21:14:53 No.944909377
仮にIQが俺より40高い部下がいたとして そいつに再起使われると俺が困りそうな予感はある
70 22/07/02(土)21:15:42 No.944909827
>>リソース少ない組み込みとかで使うとコールスタックがアッという間に溢れて死ぬ >8bitCPUとか? >最初から静的メモリ設計してギリギリでメモリ管理してる? 32bitだけどアセンブラからして独自仕様なDSPとか Cコンパイラの性能が本当に糞でほとんどアセンブラで書く羽目になった…
71 22/07/02(土)21:16:36 No.944910325
>それが10000段とか行くとjavascriptはパンパンになるっぽいので再起は不安だ es6はTCOあるよ というかGUIスレッド止まるJavaScriptそんな処理すんなよ…