虹裏img歴史資料館 - imgの文化を学ぶ

ここでは虹裏imgのかなり古い過去ログを閲覧することができます。

再起法... のスレッド詳細

削除依頼やバグ報告は メールフォーム にお願いします。個人情報、名誉毀損、侵害等については積極的に削除しますので、 メールフォーム より該当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そんな処理すんなよ…

↑Top