以下代码将使用相邻差值算法生成前 10 个斐波那契数:
v = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
std::adjacent_difference(v.begin(), v.end() - 1, v.begin() + 1, std::plus<int>());
for (auto n : v) {
std::cout << n << ' ';
}
std::cout << '\n';
输出:1 1 2 3 5 8 13 21 34 55
但是,如果我想继续生成斐波那契数,直到达到(例如)4,000,000 的值(例如,不是第四百万个斐波那契数,而是值恰好是 400 万(或更大)的第 N 个斐波那契数),该怎么办。
显然,带有 push_back 的 do while 循环可以完成这项工作,但我想知道是否可以将 STL 算法与 back_inserter 和 lambda 函数结合起来指定重复直到条件(例如,在达到或超过 400 万个值后停止插入)?
我看到的问题是大多数算法都在一个范围内运行,并且提前我们不知道需要多少元素才能产生 400 万的斐波那契数。