在此方法中计算阶乘:
unsigned long long factorial(int n){
unsigned long long temp = 1L;
for(int i = 0 ; i < n ; i++){
temp *=(n - i);
}
printf("\n%d factorial is %llu",n,temp);
return temp;
}
只允许计算20!
。
20! = 2432902008176640000 << 2^64
21! = 51090942171709440000 >> 2^64
我从未使用过uintmax_t
和阅读过其他一些 SO 文章,使用起来感觉非常复杂。如果有人可以提供一些简单的片段来说明如何使用和打印它们,那将是一个很大的帮助。
编辑关于 Didier Trosset 的问题,我认为 20 肯定不会是人们可以在 C 中计算阶乘的上限。我读到 uintmax_t 是最大的数据类型,所以我认为它可能是 128 位或其他东西。所以我想用它。
另外,我不知道 C 中的大型 int 库。抱歉,如果我创建了一个重复的帖子。