应该返回数组的 n
位置。但是我得到的不是值,而是 0。
int fibonacci(int n)
{
int f[100];
f[0] = 0;
f[1] = 1;
for (int i=2; i<n; i++)
{
f[i] = f[i-2] + f[i-1];
}
return f[n];
}
int main()
{
cout << fibonacci(3);
return 0;
}
新代码:
新问题是它返回一个数字比它应该返回的更远。例如,如果 'n==7' 返回的是 '13' 而不是它应该返回的 '8'。
int fibonacci(int n)
{
int f[100] = { 0, 1 };
for (int i=2; i<=n; i++)
{
f[i] = f[i-2] + f[i-1];
}
return f[n-1];
}
int main()
{
cout << fibonacci(7);
return 0;
}
最佳答案
好吧,你从来没有设置f[n]
, 你最多只能到 i < n
, 即 i == n-1
.
尝试返回 f[n-1]
编辑:正如 Chris Lutz 指出的那样,我的回答并不好,因为如果您调用 fibonacci(0)
会给出无效结果。
正如许多人已经回答的那样,最好的解决方案是循环直到 i <= n
当然,除非你想要 fibonacci(3)
返回斐波那契数列中的第三个元素而不是第四个元素,在这种情况下 fibonacci(0)
没有意义,正确的返回值应该是 f[n-1]
... 仍然是 n==0
案例应该以某种方式处理,n<0
也应该如此。和 n>100
例。
你可以返回f[n-1]
只要您检查正确的边界:
int fibonacci(int n)
{
int f[100] = { 0, 1 };
if ((n <= 0) || (n > 100))
return -1;//return some invalid number to tell the caller that he used bad input
for (int i=2; i < n; i++) // you can use i < n here
{
f[i] = f[i-2] + f[i-1];
}
return f[n-1];
}
关于c++ - 斐波那契函数的问题。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4349734/