编译期生成指定规则数组

编译期生成指定规则数组

以fbnq数列为例子(C++20)

#include <array>
#include <iostream>
using namespace std;

template <typename T, std::size_t N>
consteval auto Fibonacci_sequence() noexcept {
std::array<T, N> arr{1, 1, 2};
for (int i = 3; i < N; ++i) {
arr[i] = arr[i - 2] + arr[i - 1];
}
return arr;
}

// 生成前50项斐波那契数列
auto num3 = Fibonacci_sequence<size_t, 50>();

// 运行期对比
size_t fbnq(int i)
{
if (i <= 1)
return 1;
else
return fbnq(i - 1) + fbnq(i - 2);
}

int main()
{
int i;
cin >> i;
cout << num3[i];
// cout << fbnq(i); // 运行期对比
}