Fibonacci迭代方法 - java

Lil*_*ncy 0 java

我创建了一种迭代计算斐波纳契数的方法(我不允许使用递归).在指数47之后,我得到了奇怪的结果:

斐波纳契数47:-1323752223
斐波那契数48:512559680
斐波那契数49:-811192543
斐波那契数50:-298632863

我尝试了不同的方法,但它改变了整个事情.这是我的方法,任何想法?希望您能够帮助我.

public static long fiboIterative(int n) {

    if (n == 0)
        return 0;
    if (n == 1 || n == 2)
        return 1;

    int previous = -1;
    int result = 1;

    for (int i = 0; i <= n; i++) {

        int sum = result + previous;
        previous = result;
        result = sum;
    }

    return result;
    }
Run Code Online (Sandbox Code Playgroud)

}

rge*_*man 8

你已经溢出了int用来存储当前Fibonacci数字.在int没有溢出的情况下可以存储的最大值略高于20亿. Integer.MAX_VALUE是2147483647.您可以使用更大的数据类型,例如long,对sum,previous和result,打印出更多的成果.但是,它最终也会溢出. Long.MAX_VALUE是9223372036854775807,有点超过9 quintillion.