0

在此方法中计算阶乘:

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 库。抱歉,如果我创建了一个重复的帖子。

4

0 回答 0