gpt4 book ai didi

c++ - 每次都出乎意料的结果

转载 作者:太空宇宙 更新时间:2023-11-04 14:59:29 25 4
gpt4 key购买 nike

我一直在尝试在线性时间内实现斐波那契数列。每次运行程序时,我总是得到奇怪的结果。我是 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;
}

预期结果为:2

我得到的结果是:4199748

我哪里搞砸了?

最佳答案

如果arr长度为 n它没有索引为 n 的元素因此您正在越界访问 return arr[n] 中的数组.这会导致未定义的行为,任何事情都可能发生。你可能想要一个长度为 n+1 的数组迭代到 i <= n .

此外,在标准 C++ 中,数组大小必须在编译时已知。因此变长数组arr[n]之所以允许,是因为您的编译器对它有特殊支持。使用 std::vector相反。

关于c++ - 每次都出乎意料的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57634520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com