概述
使用模板元技术:
template <int num> struct Fibonacci { enum { result = Fibonacci<num-1>::result + Fibonacci<num-2>::result }; };
我们可以看到,上面实际上运用到了递归,递归总要有一个结束的时候,因此我们需要为它写两个特化版本:
template<> struct Fibonacci<0> { enum { result = 1 }; }; template<> struct Fibonacci<1> { enum { result = 1 }; };
这样,我们就可以在编译器确定斐波那契数列的具体值了,下面是一个测试程序:
int _tmain(int argc, _TCHAR* argv[]) { printf("%d ", (int)(Fibonacci<0>::result)); printf("%d ", (int)(Fibonacci<1>::result)); printf("%d ", (int)(Fibonacci<2>::result)); printf("%d ", (int)(Fibonacci<3>::result)); printf("%d ", (int)(Fibonacci<4>::result)); printf("%d/n", (int)(Fibonacci<5>::result)); return 0; }
输出结果是:
1 1 2 3 5 8
最后
以上就是快乐招牌为你收集整理的C++模板编程:如何在编译器确定斐波那契数列?的全部内容,希望文章能够帮你解决C++模板编程:如何在编译器确定斐波那契数列?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复