c++模板阶乘计算
C++ template factorial computation
假设我有这样的代码:
template <int n>
class Factorial
{
public:
static const int f = Factorial<n-1>::f*n;
};
template<>
class Factorial<0>
{
public:
static const int f =1;
};
这是一个用来计算阶乘的模板。它应该在编译时计算。在编译时通过模板执行计算通常是合理的(特别是:更快)吗?P.S.对不起,如果这个问题之前已经问过和回答过了,我搜索了这个问题,只发现了类似的问题。
如果你可以在编译时计算一些东西,你应该这样做,除非这会使你的代码变得非常复杂。通常,编译器会在编译时为您计算常数子表达式。然而,你所展示的计算是不同的,因为它使用模板作为图灵完备的编程系统。
这个特殊的模板旨在提供一个简单的演示,说明如何在编译时计算一些东西。该程序看起来非常像Prolog程序:它由一个简单的基本情况和一个递归简化步骤组成。这类程序的问题在于它们非常难以理解。尽管在某些情况下编译时计算可以帮助您构建可靠的软件,但是这些方法的适用性是有限的,因为它们创建了重要的维护责任。
相关文章:
- 在 C++ 中的数组上使用阶乘函数
- 阶乘问题在 c++ 中给出错误的输出
- 计算阶乘的 C++17 倍表达式中的错误
- 为什么 Lisp 中 1000 阶乘的计算如此之快(并显示正确的结果)?
- 计算最大数字的阶乘
- 高效计算阶乘
- 3 函数加主函数 C 程序计算和显示阶乘
- 当n变大时,在计算阶乘(N)mod m上遇到困难
- 为什么低效的阶乘计算…高效(快速)
- 在编译时计算小整数的阶乘
- 使用指针数组存储阶乘计算的所有中间结果
- 如何在c++中计算阶乘
- 我怎样才能在c++中计算二重的阶乘
- c++模板阶乘计算
- 使用霍纳规则计算 Erf 函数(不使用阶乘和幂)
- 使用迭代和递归计算阶乘时的不同答案
- 阶乘在main中显示错误的答案.在函数中正确计算
- 是否有可能在编译时计算数字的阶乘,但不使用枚举?
- 使用基本数据类型在c++中计算这个阶乘项
- 当我计算一个大的阶乘时,为什么我会得到一个负数