1

ここで屠殺に身を捧げるつもりだ。

他の質問が利用できることを確認しましたが、次のコードの IndexOutOfRange 例外の原因を見つけることができないようです:

public static int fib2(int n)
    {
        int[] fibarray = new int[n];

        if (n == 0) return 0;

            fibarray[0] = 0;
            fibarray[1] = 1;

            for (int i = 2; i < n; i++)
            {
                fibarray[i] = fibarray[i - 1] + fibarray[i - 2];

            }

            return fibarray[n];

     }

それは確かに本当にばかげたことですが、それは私を夢中にさせています(しゃれを意図しています)...

4

1 に答える 1

4

それが最後の行です!

return fibarray[n];

テーブルの最後のインデックスは、n ではなく n-1 です。

アップデート

Attila が言ったように、n=1 の場合、

fibarray[1] = 1;

IndexOutOfRange も作成します

于 2012-06-11T12:32:51.050 に答える