码迷,mamicode.com
首页 > 其他好文 > 详细

用模板元实现50个台阶问题,一次走一步或者两步或者3步,用模板元实现求裴波那契额数列

时间:2014-08-18 16:32:42      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   ar   2014   



1.用模板元实现50个台阶问题,一次走一步或者两步或者3

2.分析

bubuko.com,布布扣

由上面分析可以知道,到达NN > 3)级台阶时的次数为:目标台阶的前3个台阶分别直接到目标台阶的次数总和。

3.模板元把在运行时消耗的时间,在编译器键优化。

4.通过模板元实现的代码如下:

#include <iostream>

/*这里是int 类型的,N表示台阶数量*/
template<int N>
struct data
{
	enum { res = data<N - 1>::res + data<N - 2>::res + data<N - 3>::res };
};

template<>
struct data<1>
{
	enum { res = 1 };
};

template<>
struct data<2>
{
	enum { res = 2 };
};

template<>
struct data<3>
{
	enum { res = 4 };
};

void main()
{
	const int myint = 4;
	int num = data<myint>::res; //<>内部不可以有变量
	std::cout << num << std::endl;

	std::cin.get();
}

运行结果为:7


2.用模板元实现求裴波那契额数列

/*用模板元实现求裴波那契额数列,1,1,2,3,5,....,求其中F(n)=F(n-1)+F(n+2)*/
#include <iostream>

/*这里是int 类型的,N表示台阶数量*/
template<int N>
struct data
{
	enum { res = data<N - 1>::res + data<N - 2>::res};
};

template<>
struct data<1>
{
	enum { res = 1 };
};

template<>
struct data<2>
{
	enum { res = 1 };
};

void main()
{
	const int myint = 5;
	int num = data<myint>::res; //<>内部不可以有变量
	std::cout << num << std::endl;

	std::cin.get();
}
运行的结果是:5


 



用模板元实现50个台阶问题,一次走一步或者两步或者3步,用模板元实现求裴波那契额数列,布布扣,bubuko.com

用模板元实现50个台阶问题,一次走一步或者两步或者3步,用模板元实现求裴波那契额数列

标签:style   blog   http   color   os   io   ar   2014   

原文地址:http://blog.csdn.net/tototuzuoquan/article/details/38660105

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!