【发布时间】:2020-08-24 07:12:35
【问题描述】:
#include<iostream>
int fastFibonacci(int n)
{
int numbers[n+2]; // int numbers[n].
numbers[0] = 0;
numbers[1] = 1;
for (int i = 2; i <= n; i++)
{
numbers[i] = numbers[i - 1] + numbers[i - 2];
}
return numbers[n];
}
int main() {
int n;
std::cout << "Enter a Number";
std::cin >> n;
int result = fastFibonacci(n);
std::cout << result << "\n";
return 0;
}
在此代码中,当我输入输入 0 或 1 时得到正确答案。但问题是,当我用注释部分替换 int numbers[n+2]; 时,当输入为 0 或 1 时,它开始给我错误的答案。为什么?任何人请解释我。
【问题讨论】:
-
声明可变长度数组是一个非标准的 C++ 特性。这只是一个糟糕的代码,仅此而已。:)
-
好的,我明白了,但你能解释一下这个声明 int numbers[n+2];
-
在这段代码中,当我输入 0 或 1 时得到正确答案。 -- 你很幸运,因为这段代码并不能为 Visual Studio 编译,因为非标准 C++ 语法。
-
@Desg Aman 这是一个包含 n + 2 个元素的数组的声明。
-
哦,好的,感谢您的帮助,我是初学者,所以这就是为什么我会犯错误希望好的,非常感谢您的帮助
标签: c++ fibonacci function-definition