我正在考虑这个并试图弄清楚斐波那契是如何在这里实施的?
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
我在这里错过了什么吗?
答案 0 :(得分:5)
它是fibonacci(5 - 1) + fibonacci(5 - 2)
,它是序列中的前两个数字(5
和3
),而不是(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
你的功能是正确的,但大数字的速度很慢。