我的代碼是表示SPOJ「錯誤輸出」,雖然它的運行沒有在我的編譯器的麻煩。
該程序的代碼是:
#include<stdio.h>
int factorial(int);
int main(){
int a[100],t,n,i;
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%d",&a[i]);
}
for(i=0;i<t;i++){
printf("%d",factorial(a[i]));
printf("\n");
}
return 0;
}
int factorial(int n){
if(n==0){
return 1;
}
else if(n==1){
return 1;
}
else{
return n*factorial(n-1);
}
}
根據問題規範,n <= 100。考慮數量有多大100!是。它是否適合'int'? – njuffa 2015-02-05 19:09:53
你也可以嘗試一個非遞歸函數:'int result = 1; for(int i = n; i> 1; i--)result * = i;'雖然它看起來是正確的。沒有看到你的'錯誤的輸出',我不知道。 – MiltoxBeyond 2015-02-05 19:15:58
long double is required – MiltoxBeyond 2015-02-05 20:12:46