(C++)大きい場合、誤った結果が、私は二項係数を算出するプログラムの開発、作成している:すべてが完璧に正常に動作します(10まで)、小さな入力の場合二項係数のprogramm出力入力は
#include <iostream>
#include <string>
using namespace std;
int factorial(int num){
int res = 1;
for(int i = 1;i <= num; ++i){
res *= i;
}
return res;
}
int binom(int n,int k){
int factorial(int num);
int binom_coef;
binom_coef = factorial(n)/(factorial(k)*factorial(n-k));
return binom_coef;
}
int main(){
int n,k;
int binom(int n,int k);
try{
cout << "Enter number n:";
cin >> n;
cout << "Enter number k:";
cin >> k;
if(n < k){
throw -1;
}
cout << binom(n,k) << "\n";
}catch(int x)
cout << "n must be biggger than k";
}
を。しかし、十分に大きなnとk(10以上)を入力すると計算が完全に間違っているので、なぜそれがわからないのですか?
私を助けることができますか?
'factorial(n)'は、適度に大きい 'n'でもオーバーフローします。まず、巨大数を計算せずに二項係数を計算する方法を見つける必要があります。 –
@IgorTandetnikあなたはいくつかのヒントを持っていますか? – soc5