为什么计算相对较小的数字(34+)的阶乘会返回 0?

2023-12-23

int n = Convert.ToInt32(Console.ReadLine());
int factorial = 1;
    
for (int i = 1; i <= n; i++)
{
    factorial *= i;    
}
Console.WriteLine(factorial);

此代码在控制台应用程序中运行,但当数字大于 34 时,应用程序返回 0。

为什么返回 0 以及如何计算大数的阶乘?


您超出了变量可以存储的范围。这实际上是一个阶乘,其增长速度比指数更快。尝试使用ulong http://msdn.microsoft.com/en-us/library/t98873t4.aspx(最大值 2^64 = 18,446,744,073,709,551,615)而不是 int (最大值 2^31 = 2,147,483,647) -ulong p = 1- 这应该会让你更进一步。

如果您需要更进一步,.NET 4 及更高版本有BigInteger http://msdn.microsoft.com/en-us/library/system.numerics.biginteger%28v=vs.100%29.aspx,可以存储任意大的数字。

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

为什么计算相对较小的数字(34+)的阶乘会返回 0? 的相关文章

随机推荐

  • 操作无法完成。无效指针 - Visual Studio 2015 更新 3

    打开时出现这个错误 cshtml file 操作无法完成 无效指针 安装更新 3 和 Net Core 后一切都会开始 MVC 核心应用程序 cshtml文件正确打开 请清除 Visual Studio 组件缓存 重新启动 Visual S
  • 使用 VTK 的 Python 可执行文件... pyinstaller、py2exe、cx_freeze 等

    我使用 pyqt 在 python 中构建了一个 gui 它导入了 VTK 我没有运气让 py2exe pyinstaller cx freeze 等使用它 我收到一个错误 使用 pyinstaller 说出以下内容 vtk helper
  • 从 GridView 中删除列

    我有一个带有几列的 GridView 我不想将其导出为 PDF 通过 iTextSharp 如何在导出数据之前隐藏不想导出的列 在导出数据之前 请执行以下操作 myGridView columns RemoveAt index Index
  • jQuery 检测移动 Safari/iOS 上的页面底部

    我基本上想要与 facebook twitter 和所有其他 无限 滚动网站相同的功能 我目前使用的代码是 jQuery document ready function jQuery window scroll function if io
  • 如何优雅地终止 BLOCKED 线程?

    有很多地方可以优雅地终止 C 线程 然而 它们依赖于循环或循环内执行的 if 条件 这假设该语句将被频繁执行 因此 当stopbool 标志被设置 线程快速退出 如果我有一个线程的情况不正确怎么办 就我而言 这是一个设置为从服务器接收数据的
  • 如何创建固定大小的对象数组

    在 Swift 中 我试图创建一个包含 64 个 SKSpriteNode 的数组 我想首先将其初始化为空 然后将精灵放入前 16 个单元格和最后 16 个单元格中 模拟国际象棋游戏 根据我在文档中的理解 我希望得到类似的结果 var sp
  • DTrace 能否从 OS X 上的 Keychain 中找到不可提取的私钥?

    我正在尝试获取私钥似乎无法导出钥匙串访问 app https security stackexchange com questions 64323 export non extractable private key from keycha
  • 如何在批处理文件中从当前工作目录 %~dp0 中转义与号 (&)

    我通常通过给出批处理命令 dp0 来组合多个 csv 文件来获取当前工作目录 但是我在获取当前工作目录时遇到了与号 符号 这使得批处理文件在 之后中断 表示 之后的路径不被识别为内部或外部命令 你们中的任何人都可以帮助我修改下面的脚本来识别
  • 如何使用 Ansible 搜索包含特定文本的文件?

    我想知道除了 Ansible 模块之外是否还有其他模块command这会给我一个包含模式的文件列表 递归搜索 在 Unix 上我会这样做 find type f exec grep l pattern 结果将是我要迭代以用另一个值更改一个值
  • Spring MVC Rest中处理JSon时如何处理POJO嵌套对象

    我试图弄清楚如何更好地处理 Spring MVC 中嵌套 Java 对象的 JSon 序列化 反序列化 我的域模型如下 public class Cart private String id private Customer custome
  • 数组中的对象数组通过测试

    我有一个 NSArray 对象 它有一个属性id 然后我有另一个带有选择的 id 的 NSArray 我需要获取第一个数组中具有第二个数组中列出的 id 的所有对象 是否可以在没有 for 循环的情况下执行此操作 1 个 for 循环可以
  • 如何在 StackNavigator 中将参数传递到屏幕?

    我的反应本机代码 import React Component from react import AppRegistry ActivityIndicator StyleSheet ListView Text Button Touchabl
  • 如何为我的测验应用程序布局表单以及发布到哪里?

    我想我的问题有两个 现在我只是显示问题和答案 但没有给用户选择他或她的选择的选项 正确答案部分只是为了测试我是否可以正确设置哪些答案是正确的 我有调查 gt 问题 gt 答案的嵌套模型 调查 show html erb ol li clas
  • 在 MUI 数据网格中插入新行时如何自动递增行 id?

    我试图将行从 MUI Kit 插入到我的数据网格组件中 而不必处理我不需要但需要唯一的 id 我尝试根据以下内容增加 id 号rows length但由于某种原因我总是得到 0 这是我的代码 const initial rows GridR
  • Task.Run() 与 Async/Await

    我对我正在编写的一些代码有疑问 我对一些具有大负载的端点同步进行了 3 个调用 我不想等待这些有效负载 而是继续运行该方法 直到我需要来自这 3 个端点的值 我已经采取了这样的解决方案 我将调用 3 个服务端点的方法转换为异步方法 我使用以
  • 如何重命名一堆文件以消除引号

    我的 iomega NAS 使用类似 linux 的操作系统 上面有一堆备份文件 文件名中包含双引号 像这样 水 4 水 5 等等 不要问它们是如何到达那里的 它们最初是在 Mac 上创建的 当我尝试将文件复制到备份驱动器时 这会导致问题
  • numpy.array.tolist() 将 numpy.datetime64 转换为 int

    我有一个日期时间数组 需要将其转换为日期时间列表 我的数组如下所示 import numpy as np my array np array 2017 06 28T22 47 51 213500000 2017 06 28T22 48 37
  • 在 libpcap pcap_loop() 回调上传递参数

    因为我想做一些测试libpcap http www tcpdump org pcap htm和一个小型 C 程序 我试图将一个结构从 main 传递到 got packet 阅读 libpcap 教程后 我发现了这一点 pcap loop
  • Firebird 适合 ASP.NET 的嵌入式数据库吗?还有哪一个?

    为我的 asp net 应用程序寻找一个好的嵌入式数据库 同时尝试避免 SQLExpress 我需要它是一个可下载的文件 无需在服务器上安装 我找到了火鸟 但 根据这个 http en wikipedia org wiki Embedded
  • 为什么计算相对较小的数字(34+)的阶乘会返回 0?

    int n Convert ToInt32 Console ReadLine int factorial 1 for int i 1 i lt n i factorial i Console WriteLine factorial 此代码在