带向量的斐波那契数列
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)
不会越界。
我目前正在尝试解决 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)
不会越界。