C++ 每次都有意外的结果
我一直在尝试在线性时间内实现斐波那契级数。每次我运行程序都会得到奇怪的结果。我是C++的新手。C++ 每次都有意外的结果,c++,fibonacci,C++,Fibonacci,我一直在尝试在线性时间内实现斐波那契级数。每次我运行程序都会得到奇怪的结果。我是C++的新手。 int fib1(int n) { int arr[n]; arr[0] = 0; arr[1] = 1; for (int i = 2; i < n; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } return arr[n]; } int main() { int x =
int fib1(int n) {
int arr[n];
arr[0] = 0;
arr[1] = 1;
for (int i = 2; i < n; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
return arr[n];
}
int main() {
int x = fib1(3);
cout << x << endl;
return 0;
}
intfib1(intn){
int-arr[n];
arr[0]=0;
arr[1]=1;
for(int i=2;i cout如果arr
的长度为n
它没有索引为n
的元素,因此您在return arr[n]
中访问数组超出了范围。这会导致未定义的行为,并且可能会发生任何情况。您可能需要一个长度为n+1
的数组,并在i之前进行迭代(int i=2;i < n;i++){我不理解C++的代码> int ARR [n] < /C> >(VLAs是C的一个特性,而不是标准C++)。如果<代码> ARR < /C>是一个数组,它具有<代码> n< /Case>元素,<代码>返回ARR[n] < /Cord>返回不存在的元素的值,并导致未定义的行为。