c# - 为什么使用 BigInteger 不可能实现阶乘 1000?
问题描述
所以当你用谷歌搜索时,它说 C# 中的 BigInteger 是无限的,但 1000 的阶乘是未定义的。我做了这个简单的递归方法,它返回的东西非常大。
static BigInteger faculty(int n) {
if(n == 2)
return 2;
return n*faculty(n-1);
}
所以这可能是一个溢出,但这是否意味着 BigIntegers 不是无限的?
解决方案
这不是(不可能)。以下工作在这里很好(在 .NET Core 3.1 和 .NET Framework 4.7.2 上测试):
var x = faculty(1000);
var s = x.ToString();
Console.WriteLine(s.Length); // 2568 (digits)
Console.WriteLine(s); // 402387260...000000 (lots of digits)
推荐阅读
- php - 找不到类 - 扩展 Walker_Nav_Menu
- laravel - 取消链接(\public\images/backend_images/category_images/):权限被拒绝
- php - 在我的 ajax 成功中使用自动完成事件
- azure - Azure Cosmos DB 输入绑定 - 不能将 OFFSET 和 LIMIT 值作为参数传递?
- sql-server - 从表中的一个字段更新到 XML 代码的另一部分
- python - 根据值移动数据 (CSV) - Python / Excel
- r - 如何在 R 中生成 LaTeX 以报告带有 APA 格式错误术语的 ANOVA?
- java - 使用 DOM 解析和处理 3GB 的 xml 文件时出现堆内存问题
- javascript - map.array 中的 if 语句与反应
- angular - 如何在 ng 中创建动态表单以将数据发布到数据库?