質問編集履歴

2

ベストアンサーの方のアドバイスを基にコードを修正したため

2021/10/23 10:05

投稿

taka10taka12
taka10taka12

スコア7

test CHANGED
File without changes
test CHANGED
@@ -133,3 +133,127 @@
133
133
 
134
134
 
135
135
  ```
136
+
137
+ ### 追記
138
+
139
+
140
+
141
+ データ専用のクラスを作成し、そのクラス内で再帰関数を呼び出すように修正しました。
142
+
143
+ アドバイスいただきありがとうございました。
144
+
145
+ 以下に、修正したコードを添付します。
146
+
147
+
148
+
149
+ ### 【修正版】ソースコード
150
+
151
+
152
+
153
+ ```C#
154
+
155
+ using System;
156
+
157
+ using System.Collections.Generic;
158
+
159
+ using System.Linq;
160
+
161
+
162
+
163
+ namespace AtCoder
164
+
165
+ {
166
+
167
+ class Problem
168
+
169
+ {
170
+
171
+ static void Main()
172
+
173
+ {
174
+
175
+ // 何番目までかを受け取る
176
+
177
+ var input = int.Parse(Console.ReadLine());
178
+
179
+
180
+
181
+ // memo用listを作成し、-1で初期化する
182
+
183
+ var data = new Data();
184
+
185
+ data.Memo = new List<int>();
186
+
187
+ for (int i = 0; i <= input; i++)
188
+
189
+ {
190
+
191
+ data.Memo.Add(-1);
192
+
193
+ }
194
+
195
+
196
+
197
+ // n番目のフィボナッチ数列を出力
198
+
199
+ Console.WriteLine(data.fibo(input));
200
+
201
+
202
+
203
+ // 以下は確認用
204
+
205
+ var j = 0;
206
+
207
+ foreach (int num in data.Memo)
208
+
209
+ {
210
+
211
+ Console.WriteLine("{0}番目: {1}", j, num);
212
+
213
+ j++;
214
+
215
+ }
216
+
217
+ }
218
+
219
+ }
220
+
221
+
222
+
223
+ class Data
224
+
225
+ {
226
+
227
+ public List<int> Memo {get; set;} // memo用のlist
228
+
229
+
230
+
231
+ public int fibo(int i)
232
+
233
+ {
234
+
235
+ // ベースケース
236
+
237
+ if (i == 0) return Memo[i] = 0;
238
+
239
+ if (i == 1) return Memo[i] = 1;
240
+
241
+
242
+
243
+ // memoをチェック
244
+
245
+ if (Memo[i] != -1) return Memo[i];
246
+
247
+
248
+
249
+ // 再帰呼び出し
250
+
251
+ return Memo[i] = fibo(i - 1) + fibo(i - 2);
252
+
253
+ }
254
+
255
+ }
256
+
257
+ }
258
+
259
+ ```

1

タイトルの表現の変更

2021/10/23 10:05

投稿

taka10taka12
taka10taka12

スコア7

test CHANGED
@@ -1 +1 @@
1
- 【C#】【アドバイス】フィボナッチ数列を動的計画法で求める
1
+ 【C#】【アドバイスお願いします】フィボナッチ数列を動的計画法で求める
test CHANGED
File without changes