我的目标是编写一种显示斐波那契序列如何运动的方法。我必须使用一个数组和方程式来显示数字如何在数组上移动(因此使用fibonacci方法迭代该值:先前的数字+当前的数字=下一个数字)。这是我想与array []一起使用的逻辑:
n = fibonacci number
i = 1;
previousNumber = 0
nextNumber = 1
sum = previousNumber + nextNumber;
while (i <= n) {
sum = previousNumber + nextNumber;
previousNumber = nextNumber;
nextNumber = sum;
return nextNumber;
我走了这么远,被困住了:
long fibonacci(int fibonacci) {
int[] fib = new int[20];
if (fibonacci < 0) {
throw new IllegalArgumentException("n value cannot be negative number");
}
if (fibonacci == 0 || fibonacci == 1) {
return 1;
}
fib[0] = 1;
fib[1] = 1;
int i ;
for (i = 2; i < fibonacci; i++) {
fib[i] = fib[0] + fib[1];
fib[0] = fib[1];
fib[1] = fib[i];
}
return fib[i];
}
}
返回的值似乎还可以。在fibonacci测试中,来自5的fib是5,而来自4的fib是3。让我担心的是此字符串在调试器上的外观。我移动它们的方式使它们看起来像:{3,5,2,3,5},它应该是{1,1,2,3,5}。请您就我的方法提供支持和意见。
您的循环是错误的。应该是:
for (i = 2; i < fibonacci; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
永远不要更改fib[0]
和fib[1]
,并且fib[i]
应该是前两个元素的和。