且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Java递归Fibonacci序列

更新时间:2022-03-06 00:00:34

您的代码有2个问题:


  1. 结果存储在int中,只能处理前48个斐波那契数字,此后整数填充减去位且结果错误。

  2. 但是你永远不能运行斐波那契(50)。

    代码

    斐波那契(n - 1)+斐波那契(n - 2)

    是非常错误的。

    问题在于它称斐波纳契不是50倍而是更多。

    起初它叫斐波那契(49)+斐波那契(48),

    next斐波那契(48)+斐波那契(47)和斐波那契(47)+斐波那契(46)

    每次变得斐波那契(n)更糟,所以复杂性呈指数级增长。

非递归代码的方法:

 double fibbonaci(int n){
    double prev=0d, next=1d, result=0d;
    for (int i = 0; i < n; i++) {
        result=prev+next;
        prev=next;
        next=result;
    }
    return result;
}