在编译时计算小整数的阶乘

2024-02-04

我刚刚实现(再次)一个递归模板,用于在编译时计算整数的阶乘(谁会想到有一天我实际上会需要它!)。不过,我没有自己动手,而是去了Boost http://www.boost.org/寻找答案。然而,特殊数学中的阶乘函数明确禁止将其与整数类型一起使用,所以我只是编写了自己的函数。

不过,Boost 中还有其他我应该使用的函数吗?我应该将整数转换为double并使用boost::factorial功能?计算是在编译时执行的吗?


你不需要 Boost,如果你有 C++11,这只是 1 行代码:

constexpr uint64_t factorial(uint64_t n) { 
    return n == 0 ? 1  :  n * factorial(n-1); 
}

即使您的 arg 也不是编译时间常量,它也会起作用。 uint64_t 适用于 n

如果您在编译时执行此操作并与浮点值相乘 - 将不会有转换开销(转换也将在编译时进行)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在编译时计算小整数的阶乘 的相关文章

随机推荐

  • 变量===未定义与typeof变量===“未定义”

    The jQuery 核心风格指南 https contribute jquery org style guide js type checks建议两种不同的方法来检查变量是否已定义 全局变量 typeof variable undefin
  • jQuery UI 可排序动画

    我有一个类似网格的列表 并且按照计划在其中运行可排序功能 我想为每个项目设置动画 除了被操纵以在列表中平滑滑动的项目之外 我在这里设置了一个示例 http jsfiddle net wpmte http jsfiddle net wpmte
  • Vue.js 强制重新渲染包含 v-once 指令的组件

    Vue 2 0 我有一个包含 div 的组件 使用v once防止重新渲染的指令 当 URL 参数更改时 即单击 vue router 链接 更改组件中使用的 url 和参数 该组件会更新它显示的数据 该组件成功地使用新数据重新渲染所有内容
  • Azure MobileApp 自定义身份验证、刷新令牌

    我需要我的应用程序支持针对我们的私人数据库的自定义身份验证 并遵循此处 Adrian Hall 书中的建议https adrianhall github io develop mobile apps with csharp and azur
  • 在Java中,如果子类用实例子变量隐藏静态父变量,继承的方法将使用哪个变量?

    正如中所讨论的 这可能是一件坏事Java中的父类和子类可以有相同的实例变量吗 https stackoverflow com questions 3501060 can parent and child class in java have
  • JPA:无法使 OrderBy 工作

    我正在尝试在保留并检索后打印有序列表 我的实体 Entity public class News Id GeneratedValue private Long id private String content OneToMany casc
  • '没有找到应用程序。要么在视图函数中工作,要么推送应用程序上下文。 [复制]

    这个问题在这里已经有答案了 我正在尝试将 Flask SQLAlchemy 模型分成单独的文件 当我尝试跑步时db create all I get No application found Either work inside a vie
  • 有选择地将不记名令牌添加到 Retrofit 中的标头中

    我想知道是否有任何选项可以根据 Retrofit 中的标志或注释启用 禁用标头拦截器 由于我的 API 中很少有不需要令牌的路径 因此我需要跳过向这些 API 调用添加令牌的过程 目前我有一个简单的拦截器 它将向我的应用程序发出的所有请求添
  • 如何使用 babel/register 忽略非 js 文件

    当我的 Node 应用程序包含来自我的应用程序的路由时 我想忽略非 js 文件 例如 import scss App scss i e via Router js gt Routes js gt App js 目前 Node 显然会抛出解析
  • React 测试库 fireEvent.click 不起作用

    我基本上只是想改变一个计数器并显示该值已经改变 我正在这样做getByTestId那么这可能是问题所在 这是我的组件 import React useState from react import logo from logo svg im
  • Python 3.7 psycopg2 - Xcode 错误“错误:命令‘gcc’失败,退出状态 1”

    对于我目前正在处理的 Python Kivy 项目 使用 PyCharm 我设置了一个 postgreSQL 数据库 当我尝试使用终端安装 psycopg2 适配器时 pip install psycopg2我收到错误 错误 命令 gcc
  • 删除的 DataTable 行在排序后再次添加

    我正在使用数据表 https datatables net用于显示 HTML 表格的 jQuery 插件 我做了一个AJAX发送删除的行删除函数POST后台请求并显示返回的结果HTML消息在 infodiv 并删除相关的HTML行从DOM使
  • IDEA中有@NonNullByDefault注解吗?

    Eclipse 有 NonNullByDefault注释 它将所有值视为 NonNull除非你明确地将它们注释为 Nullable IntelliJ IDEA 中是否有等效的选项 或者您必须始终使用 Nonnull Idea 版本 14 将
  • 使用express/multer时更改文件名

    我在上传 pdf 时遇到问题 我正在使用ng file upload 到达express js的文件json是 fieldname file originalname db pdf encoding 7bit mimetype applic
  • JQuery 模式在提交前询问

    我有一个表单 用户可以在其中输入他的姓名 必填 出生日期 不需要 并且在提交表单之前 有一个确认信息 表明他 她是否确定提交没有出生日期的表单 我正在使用一个模式 它将提交上面的表格 我尝试运行下面的代码 但我看不出为什么不起作用的问题 当
  • 帮助构建修补的 Android 框架

    我是 Android 平台开发的新手 我刚刚成功构建氰化物7 http www cyanogenmod com 应用补丁后的源 这会向系统添加额外的 jar 适合 system framework 目录 刷新设备并检查新的自定义 jar 是
  • MySQL - 获取组的 sum() 分组 max()

    我有如下表结构 每行都是一场游戏 每个人每个月可以玩很多次或不玩 id person score date 1 32 444 2011 05 2 65 528 2011 05 3 77 455 2011 05 4 32 266 2011 0
  • MySQL:主机列中的 % 代表什么以及如何更改用户密码

    嗯 这就是我能看到的 select host user from mysql user host user me 127 0 0 1 root 1 root localhost localhost debian sys maint loca
  • JDBC 字符编码

    我有一个在 GlassFish 3 上运行的 Java Web 应用程序和在 MySQL 上运行的 JPA EclipseLink 我面临的问题是 如果我使用以下命令将实体保存到数据库中update 方法 String领域失去完整性 显示而
  • 在编译时计算小整数的阶乘

    我刚刚实现 再次 一个递归模板 用于在编译时计算整数的阶乘 谁会想到有一天我实际上会需要它 不过 我没有自己动手 而是去了Boost http www boost org 寻找答案 然而 特殊数学中的阶乘函数明确禁止将其与整数类型一起使用