伪代码中的斐波那契序列

时间:2013-11-11 06:32:39

标签: algorithm fibonacci

我正在考虑这个并试图弄清楚斐波那契是如何在这里实施的?

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

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:5)

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

此外,您的代码中存在错误,if (x=2)应使用==。但是我假设您在写入Stack Overflow时介绍过,或者我认为您不会得到您正在获得的序列。

答案 1 :(得分:0)

你错过了:

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

而不是等于:

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

你的功能是正确的,但大数字的速度很慢。