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-1,而不是 n。

更新

就像阿提拉说的,如果 n=1,这条线

fibarray[1] = 1;

还将制作一个 IndexOutOfRange

于 2012-06-11T12:32:51.050 回答