Fibonacci迭代移入数组[]

问题描述 投票:0回答:1

我的目标是编写一种显示斐波那契序列如何运动的方法。我必须使用一个数组和方程式来显示数字如何在数组上移动(因此使用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}。请您就我的方法提供支持和意见。

java arrays do-while fibonacci
1个回答
0
投票

您的循环是错误的。应该是:

for (i = 2; i < fibonacci; i++) {
    fib[i] = fib[i-1] + fib[i-2];
}

永远不要更改fib[0]fib[1],并且fib[i]应该是前两个元素的和。

© www.soinside.com 2019 - 2024. All rights reserved.