template<int v>
struct fnum
{
enum { val = fnum<v-2>::val + fnum<v-1>::val };
};
template<>
struct fnum<0>
{
enum { val = 1 };
};
template<>
struct fnum<-1>
{
enum { val = 1 };
};
template<int count>
struct fnumber_printer
{
static int print()
{
printf("%d", fnumber_printer<count - 1>::print());
return fnum<count>::val;
}
};
template<>
struct fnumber_printer<1>
{
static int print()
{
return fnum<1>::val;
}
};
收藏一下自己回帖写的代码,:)
特点:使用C++ meta programming方法。
无运行期迭代,无运行期循环,无临时变量。
也没有引入通项公式和产生是函数。
缺点:函数调用次数成线性增长。
可以改进的地方:在编译期确定全局静态整型数组尺寸,将数列写入该数组。
问题:全局只能生成一次数列,否则会出现编译错误。 一次生成,应该就够了。呵呵。