-2

我在看这个并试图弄清楚斐波那契是如何在这里实现的?

public int fibonacci(int x) {
    if (x==1) {
        return 1;
    } else if (x==2) {
        return 1;
    } else {
        return fibonacci(x-1) + fibonacci(x-2)
    }
}

我将此序列显示为正确的序列。

1, 1, 2, 3, 5, 8, 13, 21

问题出在5我得到的迭代上7

(5-1) + (5-2)  = 4 + 3

我在这里错过了什么吗?

4

2 回答 2

5

它是fibonacci(5 - 1) + fibonacci(5 - 2),它是序列中的前两个数字 (53),而不是(5 - 1) + (5 - 2)

此外,您的代码中存在错误,if (x=2)==改为使用。但我假设你在写信给 Stack Overflow 时已经介绍了这一点,或者我认为你不会得到你得到的序列。

于 2013-11-11T06:35:10.963 回答
0

你错过了,你有:

fibonacci(5-1) + fibonacci(5-2) = fibonacci(4) + fibonacci(3)

而不是等于:

(5-1) + (5-2)  = 4 + 3

你的函数是正确的,但对于大数字来说很慢。

于 2013-11-11T06:39:50.557 回答