我用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))
你能解释吗?
答案 0 :(得分:1)
作为解释性语言,它们(可能)会根据数据的大小自动选择变量的数据类型。
但是,在C语言中,您指定必须使用"int"
-它太小而无法容纳13个!
如果您将"int"
切换为"unsigned long long int"
(是,请两次使用“ long”),则程序将返回较长时间的正确结果,直到再次失败-大小超过64-位。