2016-04-03 10 views
3

私はフィボナッチ数で配列を埋めるvoid関数fibFillを書いています。それは何も返す必要はありません。ここでJava 1から始まるフィボナッチ値を持つ配列を返す方法は?

は、私がこれまで持っているものです。

void fibFill(int[] fibo) { 
    fibo[0] = 1; 
    fibo[1] = 1; 
    for (int i = 2; i < fibo.length; i++) { 
     fibo[i] = fibo[i - 1] + fibo[i - 2]; 
    } 
    int pos(int position) { 
     return fibo[pos]; 
    } 
} 

たとえば、私はメソッドに長さ5の配列を渡す場合、それはこのような渡された配列の内容を上書きします:[1, 1, 2, 3, 5]

+0

このコードでは何の問題もありません。 – Maljam

+2

この関数は 'fibo'が小さすぎると投げます。 – HuStmpHrrr

+0

なぜArrayListを使用しないのですか? – Laurel

答えて

4

fibFillメソッドにposメソッドを埋め込むことはできません。そして次にあなたがフィボナッチ数列が始まる(要求されるように)出力

public static void main(String[] args) { 
    int[] fib = new int[10]; 
    fibFill(fib); 
    System.out.println(Arrays.toString(fib)); 
} 

よう

何かでそれをテストすることができ

static void fibFill(int[] fibo) { 
    fibo[0] = 1; 
    fibo[1] = 1; 
    for (int i = 2; i < fibo.length; i++) { 
     fibo[i] = fibo[i - 1] + fibo[i - 2]; 
    } 
} 

のように、私はそれstaticになるだろう(それはインスタンスなしで呼び出すことができます) 1

固定
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55] 
1

で:

static void fibFill(int [] fibo) { 
if(fibo.length==0) return; 
if(fibo.length==1) 
    { 
     fibo[0]=1; 
     return; 
    } 
fibo[0] = 1; 
fibo[1] = 1; 
for (int i = 2;i < fibo.length; i++) 
    { 
     fibo[i]=fibo[i-1]+fibo[i-2]; 
    } 
} 

//there is no need for pos, as you can get it by type fibo[index] 

このソリューションにはO(n)がかかりますが、数式で直接行うこともできますし、さらにフィボナッチを計算する方法もあります。詳細については、 five ways to calculate fibonacci

+0

このメソッドは、0要素の配列では失敗します。 – EJP

関連する問題