qiboda
2/12/2018 - 3:35 PM

FibonacciN using template

Compute the nth fibonacci number using template metaprogramming.

#include <iostream>

using namespace std;

template <int N>
class FibonacciN {
public:
	enum { result = FibonacciN<N-1>::result + FibonacciN<N-2>::result};
};

template <>
class FibonacciN<1> {
public:
	enum { result = 0 };
};

template <>
class FibonacciN<2> {
public:
	enum { result = 1 };
};

int main() {
	// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34
	cout << FibonacciN<10>::result << endl;
	system("pause");
	return 0;
}