使用模板元编程快速的得到斐波那契数。。-阿里云开发者社区

开发者社区> 泳泳啊泳泳> 正文

使用模板元编程快速的得到斐波那契数。。

简介:
+关注继续查看

这是一种将运行时消耗转移到编译器消耗的方法,是c++模板的一种应用。

当你的程序运行时效率需要特别高的时候,可以考虑这样的方法。

模板实例化的时候需要常量:

#include <iostream>
using namespace std;
template < unsigned N >
struct Fib
{
   enum
   {
      Val = Fib<N-1>::Val + Fib<N-2>::Val //递归。。
   };
};
template<>    //针对和的特化作为结束的条件
struct Fib<0>
{
   enum
   {
      Val = 0
   };
};
template<>
struct Fib<1>
{
   enum
   {
      Val = 1
   };
};
int main()
{
   cout<<Fib<20>::Val <<endl;
   return 0;
}

如果你觉得Fib<20>::Val这样的调用很麻烦的话可以定义一个类似的宏使得其应用有类似于函数调用的形式:

#define FibFuc( n ) (Fib<n>::Val)


==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/04/02/2429818.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
来更快的Maven了,我的天,速度提升了8倍!(1)
更快的Maven来了,我的天,速度提升了8倍!(1)
26 0
更快的Maven来了,我的天,速度提升了8倍!(3)
更快的Maven来了,我的天,速度提升了8倍!(3)
18 0
额!Java中用户线程和守护线程区别这么大?(3)
额!Java中用户线程和守护线程区别这么大?(3)
8 0
CyclicBarrier:人齐了,老司机就发车了!(2)
CyclicBarrier:人齐了,老司机就发车了!(2)
5 0
synchronized 中的 4 个优化,你知道几个?(2)
synchronized 中的 4 个优化,你知道几个?(2)
4 0
更快的Maven构建工具mvnd和Gradle哪个性能更好?(3)
更快的Maven构建工具mvnd和Gradle哪个性能更好?(3)
18 0
@Autowired报错的4种解决方案和原因分析!(1)
@Autowired报错的4种解决方案和原因分析!(1)
8 0
常量和变量_C语言简介|学习笔记
快速学习常量和变量_C语言简介
3 0
React 18 新特性概览 【React 面试必问】
React 18 新特性概览 【React 面试必问】
4 0
326
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载