数学パズルQ17
@boy, @girl = "B", "G" NN = 30 # seq 座っている人のリスト # 再帰は帰納法と深さ優先がある、これは深さ優先! def add(seq) return 1 if seq.size == NN isLastBoy = seq[-1] == @boy isLastBoy ? add(seq + @boy) + add(seq + @girl) : add(seq + @boy) end puts add(@boy) + add(@girl)
再帰を使う場合は帰納法と深さ優先の場合がある。
どっちか意識すると良い。
あとちゃんとした関数名を考えるクセをつけるべきだな。
解説で図を書いてくれればわかりやすいのになー。