- ベストアンサー
エラー
ruby で 組み合わせの10C0から10C10までの値をすべて合計した値を求めるアルゴリズムを作ったのですが、undefined method '+" for nil:NilClass(No Method Error)となってしまいます。 def で a(b,c)をbCcと定義しており、4の+jを書かなければ ちゃんと、1,10、45、、252と計算され表示されます。 この値の合計を出したいのですが、なぜエラーになるのでしょうか。 1 i=0 2 j=0 3 while i <= 10 4 j = a(10,i) + j 5 i = i + 1 6 puts k 7 end ーーーーーーーーーーーーーー たとえば階乗を求めるアルゴリズムで a=1 b=1 while a<=10 do b = b * a a = a + 1 end puts b の場合は、ちゃんと自己加算されます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
おそらく a(10,i) が、なんらかの引数の時に nil を返しているのでしょう。 で、そのタイミングで 「nil + 整数」という演算はできないので、質問のようなエラーになる、と。 あとは、関数 a のコードを見ないとなんとも言えません。
補足
そうなんです!! メソッドはこれです。 このメソッドは a(10,4)=210とちゃんとでます。 -------------- def a(g,h) puts a=1 b=1 while a<=g do b = b * a a = a + 1 end c=1 d=1 while c<=h do d = d * c c = c + 1 end e=1 f=1 while e<=g-h do f = f * e e = e + 1 end puts b / ( d * f ) end ーーーーーーーーーーーーーーーーー そして、問題がこれです。 aa=4 while aa <= 10 ab = a(10,aa) end puts ab たとえばこれで実行すると 210 nil とでます、どこがnilになっているのでしょうか? nilとは引数が無効という意味でしょうか?