C,Python和JavaScript中阶乘计算的不同结果

时间:2019-05-27 23:49:05

标签: c factorial

我用Python,JavaScript和C编写了一些简单的代码。我发现Python和JavaScript的结果是相同的,但是C给了我另一个-错误的结果,我无法理解是什么错误。

C代码:

int fact(int n){
    if(n==1){
        return 1;
    }else{
        return (n*fact(n-1));
    }
}

int main(void){
    printf("%i \n",fact(13));
}

JS代码:

function fact(n){
    if (n==1){
        return (1);
    }else{
        return (n*fact(n-1));
    }
}

console.log(fact(13));

Python代码:

def fact(n):
    if(n == 0):
        return 1
    else:
        return n * fact(n - 1)

print(fact(13))

你能解释吗?

1 个答案:

答案 0 :(得分:1)

作为解释性语言,它们(可能)会根据数据的大小自动选择变量的数据类型。

但是,在C语言中,您指定必须使用"int"-它太小而无法容纳13个!

如果您将"int"切换为"unsigned long long int"(是,请两次使用“ long”),则程序将返回较长时间的正确结果,直到再次失败-大小超过64-位。