我目前正试图解决Euler-Projects的一些问题,但我目前仍然遇到了第二个问题。这就是我现在所拥有的:
void p002()
{
unsigned int result = 0;
std::vector<int> fibonacci{ 1,2 };
for (int i = 2; fibonacci.at(i) < 4000000; i++)
{
fibonacci.at(i) = fibonacci.at(i - 1) + fibonacci.at(i - 2); //<- Doesn't work
if (fibonacci.at(i) % 2 == 0)
result += fibonacci.at(i);
}
std::cout << result;
}
有人可以帮助我并告诉我为什么这一行似乎不起作用? (在尝试执行代码时,我得到&#34; abort()调用&#34;错误。)
如果有人想知道:任务是得到斐波那契序列的所有整数的总和,其值低于4,000,000,这是偶数值。
谢谢!
答案 0 :(得分:1)
vector::at
会引发异常。您的向量包含2个元素(索引0和1)。因此fibonacci.at(2)
超出范围,并抛出异常。您没有捕获异常,因此调用了std::terminate
。默认情况下,std::terminate
指向abort
,终止您的流程。
解决方案:在向量中添加足够的元素,以使fibonacci.at(i)
不超出范围。