#include<iostream>
using namespace std;
int f(int n);
int main(){
int n;
while(cin>>n){
if(n==0)
cout<<n+1<<endl;
else
cout<<f(n)<<endl;
}
return 0;
}
int f(int n){
if(n==1)
return 1;
if(n==2)
return 2;
else
return f(n-1)*n;
}
我測試了,
結果在n=13時錯了
我不懂為什麼?是溢位嗎??
#include<iostream>using namespace std;int f(int n);int main(){ int n; while(cin>>n){ if(n==0) cout<<n+1<<endl; else cout<<f(n)<<endl; } return 0; }int f(int n){if(n==1)return 1;if(n==2)return 2;elsereturn f(n-1)*n;
}
我測試了,
結果在n=13時錯了
我不懂為什麼?是溢位嗎??
#include<iostream>using namespace std;int f(int n);int main(){ int n; while(cin>>n){ if(n==0) cout<<n+1<<endl; else cout<<f(n)<<endl; } return 0; }int f(int n){if(n==1)return 1;if(n==2)return 2;elsereturn f(n-1)*n;
}
我測試了,
結果在n=13時錯了
我不懂為什麼?是溢位嗎??
"輸出 n! 結果,結果不大於 263" 是溢位沒錯..... 請使用long long (-264~232-1)
更正 long long 範圍為 -264~264-1
#include<iostream>using namespace std;int f(int n);int main(){ int n; while(cin>>n){ if(n==0) cout<<n+1<<endl; else cout<<f(n)<<endl; } return 0; }int f(int n){if(n==1)return 1;if(n==2)return 2;elsereturn f(n-1)*n;
}
我測試了,
結果在n=13時錯了
我不懂為什麼?是溢位嗎??
"輸出 n! 結果,結果不大於 263" 是溢位沒錯..... 請使用long long (-264~232-1)
更正 long long 範圍為 -264~264-1