質問編集履歴

1

文章追加

2016/06/28 05:53

投稿

dialbird
dialbird

スコア379

test CHANGED
File without changes
test CHANGED
@@ -85,3 +85,61 @@
85
85
  が知りたいです
86
86
 
87
87
  よろしくお願いいたします。
88
+
89
+
90
+
91
+
92
+
93
+ 以下追加文
94
+
95
+
96
+
97
+ おかげさまで、今回の件が参照型の扱いによるものであるとわかりました。
98
+
99
+ ですが、実はもう一つスタックオーバーフローしてしまう例があるのでこちらも質問させてください
100
+
101
+
102
+
103
+ こちらも上と同様の問題を解くために作った関数なのですが、(gが女子の残り人数、bが男子の残り人数、boolがtrueならば次に女子を並べてもいいという意味)こちらもアウトらしいです
104
+
105
+ ```
106
+
107
+ def pattern3(g, b, bool)
108
+
109
+ return 0 if g > 1 && b == 0
110
+
111
+ return 1 if g == 0
112
+
113
+
114
+
115
+ sum = 0
116
+
117
+ if bool
118
+
119
+ sum += pattern3(g-1, b, false)
120
+
121
+ sum += pattern3(g, b-1, true)
122
+
123
+ else
124
+
125
+ sum += pattern3(g, b-1, true)
126
+
127
+ end
128
+
129
+ return sum
130
+
131
+ end
132
+
133
+
134
+
135
+ #適当に値を入れて実行
136
+
137
+ p pattern3(14,16,true)
138
+
139
+ #stack level too deep (SystemStackError)
140
+
141
+ ```
142
+
143
+ こちらの場合は、いわゆるスタックに情報をためすぎた、つまり変数が多すぎたから起きたものになるのでしょうか?
144
+
145
+ よろしくお願いいたします