Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 每次都有意外的结果_C++_Fibonacci - Fatal编程技术网

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 =

我一直在尝试在线性时间内实现斐波那契级数。每次我运行程序都会得到奇怪的结果。我是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 = fib1(3);
    cout << x << endl;

    return 0;
}
intfib1(intn){
int-arr[n];
arr[0]=0;
arr[1]=1;
for(int i=2;icout如果
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>返回不存在的元素的值,并导致未定义的行为。