プログラミングに詳しいお前らちょっと来てくれください

1 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:17:14.854 ID:SnaXHmh/0
レス1番の画像サムネイル

これよく分かんないんだけど
if(再帰)に返すtrue/falseってどっから仕入れてるの?

2 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:17:48.626 ID:FtIh10JQ0
気仙沼
3 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:18:29.346 ID:SnaXHmh/0
>>2
お前は何を言ってるんだ
4 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:19:51.131 ID:lfI4h8fU0
質問の意味がわからん
6 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:22:31.433 ID:SnaXHmh/0
>>4
if(dfs(i +1 , sum))

if(dfs(i +1 , sum + a[i]))

こいつらが受け取ってるtrue/falseはdfsのどこから受け取ってんの

5 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:22:26.072 ID:dGkCI0Ee0
お前に蟻本はまだ早いよ
7 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:23:17.355 ID:SnaXHmh/0
>>5
おっ!!よくわかったね!!!!
そう蟻本読んでるの!!!
ぜひ解説していただけませんか!?
ってか俺とお友達になってください!!!
8 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:30:09.659 ID:dGkCI0Ee0
俺はdfsはスタックとループで実装するので基本
9 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:31:29.881 ID:SnaXHmh/0
えでも再帰がどんなふうに回ってるかは分かるんでしょ…?
助けて…助けてよ…苦しいよ…
10 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:34:39.221 ID:QO1sW6eF0
こういうプログラム書く奴って脳に障がいあるのかな?って思うほどヒドイソースコード
11 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:40:40.926 ID:SnaXHmh/0
苦しい…なんで最初の数十ページでこんなに苦しまないといけないの……
12 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:42:17.012 ID:QO1sW6eF0
酷過ぎる
nとkはグローバル変数だしなw
13 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:48:33.521 ID:SnaXHmh/0
そんなとこの話はどうでもいいんだよ?
俺は再帰の流れが知りたいの…!
14 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 04:58:37.367 ID:l6Uk0EjG0
再帰してるだけとしか…
15 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:00:39.618 ID:SnaXHmh/0
>>14
お前嫌い
16 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:02:29.029 ID:l6Uk0EjG0
>>15
😄
17 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:03:25.036 ID:L4PSUAZZ0
dfs が最初に dfs を読んだ時 true か false はどこから来るのかってこと?
18 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:05:47.282 ID:SnaXHmh/0
>>17
うん…
ぶっちゃけ最初じゃなくてもわかんない
19 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:07:57.115 ID:QO1sW6eF0
あれだ最初は
if(dfs(i+1,sum)) return true;がひたすらfalesで回る
20 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:10:20.657 ID:SnaXHmh/0
>>19
つまり関数の一番下に辿り着いてんの?
うーん…うーん………
21 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:12:53.947 ID:QO1sW6eF0
>>20
は?バカなの?アホなの?死ぬの?
dfs()に入って
if(dfs(i+1,sum)) にひたすらたどり着く
で、i==nに達した瞬間おそらくfalseになりfalseが大量に帰る
でif(dfs(i+1,sum+a[i]))にたどり着くって仕様よ
24 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:25:49.308 ID:SnaXHmh/0
>>21
うぅ……
なんとなく書いてあるとおりに動きそうなのは分かるけどまだしっくりしない……
動けよこのポンコツ頭…!動けってんだよぉ…!!!
22 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:21:15.301
こんな時刻にプログラミングの勉強とか殊勝か!
23 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:25:11.402 ID:QO1sW6eF0
んでif(dfs(i+1,sum+a[i]))にn-1でたどり着くハズ
sum+a[n-1]の値が同じならtrueが帰る
違うならfalseが帰る
25 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:27:49.684
いきなりステーキ
いきなり return dfs(i +1 , sum) || dfs(i +1 , sum + a[i]);
でよくね?

if なんて要らなくね?(しらんけど)

26 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:28:32.838 ID:SnaXHmh/0
>>25
なおさら意味わかんない
27 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:34:35.144
>>26
再帰童貞か?
dfs :: int -> int -> bool
なんだぞ(intとintを貰ってboolを返す)
boolを返すんだから

dfs(i +1 , sum) || dfs(i +1 , sum + a[i]);
の型は
bool || bool

bool

となって、これをreturnすることから、dfsが最後にboolを返すことにつじつまが合ってるだろ
型シグニチャが合ってる

28 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:38:10.636 ID:SnaXHmh/0
>>27
型があってんのは分かるけどこれで探索の処理が完了してるってのがよくわかんないよ
ってかどうすれば再帰の記述思いつくの
こんなん頭ガンガンしちまうけど
29 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:38:30.589
ちなみに再帰アレルギーを治したいなら関数型言語で鍛練を積むといいぞ
嫌がらせのように再帰再帰再帰再帰で書かされるからな
お薦めはHaskellだ
31 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:40:08.862 ID:SnaXHmh/0
>>29
え強くなりたいからやってみようかな……
わかりやすく教えてくれるサイトないの
おれ再帰上手く使いこなせないけど再帰のことはすごい好きなんだよ
悲しい片思いの縁をなんとか結びたい……
34 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:44:05.555 ID:/S5sTQA/a
チャート絵描くと理解しやすいよ
35 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:46:00.768 ID:SnaXHmh/0
④(3==3) (0==3)//falseが帰る

ここって
if(i == n)return sum = k;
を指してるわけじゃないの

36 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:47:45.790
終了条件はi==n
いずれここに訪れて止まる(boolが返る)
なので永遠にこの二分木が成長することはない
どこかで止まって、戻ってくる

再帰で『分裂する度にiがインクリメントされている』ことに注意な
0から始まっていずれ、分裂したdfsの第一引数はnへ到達する

37 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:47:53.627 ID:QO1sW6eF0
①で
if(0==3)//これはfalse
次でdfs(0+1,0)に突入する
②層目
③層目
④層目到達してようやくif(3==3)になりsum == kの判定になる
0==3だからfalseが帰る③層目に戻る
③層目ではfalseなので
dfs(i+1,sum)を抜ける
下の
dfs(2+1,0+1)//a[2]が呼び出される
④層目に入り
3==3の判定がtrueになり、sum==kの判定になり1==3だからfalseが帰る
38 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 05:55:01.239
再帰で分裂したdfsの第一引数。これは止まるのか、無限ループなのか…。
暑い処理の夜、過熱した i は、遂に危険な領域(グローバル変数 n)へと突入する。
43 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 06:16:30.760 ID:QO1sW6eF0
てか可視化してんだろ
おまえが理解してねえだけだろ
トレースまでしてやってんのに
本来自分でやる事だぞ?
44 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 06:18:02.704 ID:SnaXHmh/0
ごめんなさい…ごめんなさい…
う…ううっ……
45 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 06:20:34.476
カッコ悪いと思っても、比較的単純なケースをチラシの裏に鉛筆使ってガチで描いて見ろ
理解できないままの方がもっとカッコ悪いんだからな
47 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 06:23:52.957 ID:SnaXHmh/0
>>45
分かった…

今まで
void saiki(){
  終了条件:
  ;
  処理 ;
  saiki();

こういうのしか見たことないからほんと苦しかった
今はスレ立てる前よりかは楽になれてる…
ありがとうね…ありがとう…おまえら…

46 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 06:21:37.043
俺達はお前のママじゃねぇんだよ
48 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 06:25:14.165 ID:QO1sW6eF0
それをif文の判定式の中に入れただけだ
49 名前:ひみつの名無しさん 投稿日時:2019/12/06(金) 06:26:41.437 ID:SnaXHmh/0
>>48
ifに入れると途端に難しくなるのどうして…?
どぉぢでreturn trueずる゛の゛ぉ゛お゛ってなっちゃうじゃん…!

コメント

タイトルとURLをコピーしました