私の学校への割り当ては、与えられたArrayList
がフィボナッチ配列の一部であるかどうかをチェックする方法を実装することです。Java:arraylistがフィボナッチ配列の一部であるかどうかを調べる
配列が空であってはならないと
大きなより3.私は、アレイと次の1の1つの数がフィボナッチ数列の一部であるかどうかを確認する必要があることを理解しなければなりません、しかし、私はたくさんありますシーケンスの一部であって最初からではない場合は、配列を受け入れることになっているからです。
例:0 1 1 2 3 5
と同様に2 3 5 8 13 21
が受け入れられます。
これまでのコードです。私はそれは非常に欠陥があることを知っているが、私は実際に移動する方法の手がかりがありません。
public class ArrayCheck {
/**
* Tests if the given array is a part of the Fibonacci sequence.
*
* @param arr array to be tested
* @return true if the elements are part of the fibonacci sequence
*/
public boolean isFibonacci(ArrayList<Integer> arr) {
//check if array exists
if(arr.size() == 0)
return false;
//check if array is bigger than 3
if (arr.size() < 3)
return false;
//check for the startsequence of 0,1,1
else if(arr.get(0) == 0 && arr.get(1) == 1 && arr.get(2) == 1)
return true;
//check every number in array
for(int i = 0; i < arr.size(); i++) {
//check if i >= 2 is fib
if(i >= 2) {
int fibn = i;
int nextfib = i + 1;
int fibnew = (fibn - 1) + (fibn - 2);
int fibnext = (nextfib - 1) + (nextfib - 2);
if (arr.get(i) != fibnew && arr.get(i + 1) != fibnext)
return false;
}
//check if the order is right
if(arr.get(i) > arr.get(i+1))
return false;
}
return true;
}
ご協力いただきありがとうございます。
実際には負の数をチェックする必要はありません。最初の負の値が配列内に存在する場合は、少なくとも2つの正の数が前に付加されます。これにより、合計制約が破られます。 –
あなたはそうです。私は過度に慎重だった。ありがとうございます:) –
ありがとう!私はどこに間違っていたのか分かります。 – Meowzen