0

私は現在、Java プログラミングのクラスを受講しており、動的配列のトピックに取り組んでいます。動的配列を使用してフィボナッチ数列を出力するプログラムを作成するように依頼されました。

これは私が持っているものです:

public class Fibonacci {
    private static int[] data;

    public static void DynamicArray() {
        data = new int[1];
    }

    public static int get(int position) {
        if (position >= data.length){
            return 0;
        } else {
            return data[position];
        }
    }

    public static void put(int position, int value) {
        if(position >= data.length) {
            int newSize = 2 * position;
            int[] newData = new int[newSize];
            System.arraycopy(data, 0, newData, 0, data.length);
            data = newData;
        }
        data[position] = value;
    }

    public static void main(String[] args) {
        System.out.println("\nFibonacci Sequence:\n");
        System.out.println(data[0]);
        for(int i = 2; i< = 20; i++) {
            data[i] = data[i-1] + data[i-2];
            System.out.println(data[i]);
        }
    }
}

ありがとう!

4

5 に答える 5

0

Javaでは、配列は静的です。初期化されると、「成長」することはできません。この問題を解決するためのいくつかのデータ構造があります(たとえば、リンクリスト)。

配列のサイズを変更する場合は、必要なサイズで新しい配列を作成してから、すべてのエントリを古い配列から新しい配列にコピーする必要があります。この種の「動的配列」のJavaの実装は、ArrayListです。しかし、これはそれほど速くはありません

于 2013-02-13T23:32:18.277 に答える
0

.push() メソッドを使用すると、動的配列としてカウントされますか? 問題がなければ、フィボナッチ数列の次の数を数えて MyArray.push(currentFibonacci); を使用できます。

于 2013-02-13T23:10:21.173 に答える
0
 while (sequence<4000000)
            {
                   i++;
                   sequence = fibonacciSequence[0]+fibonacciSequence[1];
                   System.out.println(sequence);
                   if (i%2!=0)
                   {
                     fibonacciSequence[0]=sequence;  
                   }
                   else
                   {
                     fibonacciSequence[1]=sequence;  
                   }
                   if (sequence%2==0)
                   {
                    sumEvenTerm = sumEvenTerm + sequence; 
                   }
             }

@ランディここであなたの答えをありがとう。この場合、フィボナッチ数列の長さはわかっています。長さがわからない場合もございます。私たちが知っているのは、あるフィボナッチ数の値です。上記のプログラムは使用できません。

while ループの値は、必要に応じて変更できます。

于 2014-02-02T12:14:18.447 に答える