3

アルゴリズム クラスの宿題の問題を解決しようとしていますが、以下に記述したコードの範囲外のインデックス配列を取得し続けています。私はそれにかなり慣れているので、Pythonでそれを試してみましたが、同様の例外が発生しているようです。これでどこが間違っているのか、誰かが私にヒントを与えることができますか?

public class Fibonacci1 {
    public static long F(int N) {
        long a[]  = new long [100];
        a[0] = 0; /*sets up first 2 digits in the sequence*/
        a[1] = 1;
        if (N<2) {   
            return N;
        }
        a[N] = a[N-1] + a[N-2]; /*appends F num for next number in the list*/
        N++; 
        return a[N]; /*should return the last number*/
    }
    public static void main(String[] args) {
        for (int N = 0; N<100; N++)
            StdOut.println(N+" " + F(N));
    }
}
4

3 に答える 3

10

whenでメソッド FN == 99を実行しN++、次に return を呼び出しますa[N]。これは、return を意味します。a[100]

于 2013-01-15T16:15:15.653 に答える
5

コードを少し変更する必要があります。配列はローカル変数であり、静的変数である必要があるため、正しいシーケンスが出力されません。また、n++ を削除する必要があります。以下のコードはきれいではありませんが、機能します。

public class Fibonacci1 {
    static long a[] = new long[100];

    public static long F(int N) {
        a[0] = 0; /* sets up first 2 digits in the sequence */
        a[1] = 1;
        if (N < 2) {
            return N;
        }
        a[N] = a[N - 1] + a[N - 2]; /* appends F num for next number in the list */
        return a[N]; /* should return the last number */
    }

    public static void main(String[] args) {
        for (int N = 0; N < 100; N++)
            System.out.println(N + " " + F(N));
        }
}
于 2013-01-15T16:27:28.053 に答える
0

F 関数から N++ ステートメントを削除します。

于 2013-01-15T16:16:01.430 に答える