带向量的斐波那契数列

Fibonacci Sequence with vectors

我目前正在尝试解决 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;
}

有人可以帮助我并告诉我为什么这一行似乎不起作用吗? (我在尝试执行代码时遇到 "abort() called" 错误。)

如果有人想知道:任务是获取斐波那契数列中所有小于 4,000,000 的偶数整数之和。

谢谢!

vector::at 如果您尝试访问超出范围的索引处的元素,则会引发异常。您的向量包含 2 个元素(索引为 0 和 1)。因此 fibonacci.at(2) 越界,抛出异常。您没有捕获异常,因此调用 std::terminate 。默认情况下,std::terminate 指向 abort,这会终止您的进程。

解决方案:向向量中添加足够的元素,使 fibonacci.at(i) 不会越界。