2017-12-13 5 views
0
unsigned long long int first(int b , int c){ 
int h=b; 
//int k; 
for(int k=b-1;k>c;k--){ 

    b=b*k; 
    } 
int comb=b/factorial(h-c); 
return comb; 
    } 

Diese Funktion gibt richtige Antworten für einige Fälle und falsche Antwort an andere zurück. kann mir bitte jemand helfen, ist da irgendwas mit dieser funktion falsch ?!Ich versuche, die Kombination (Wahrscheinlichkeit) von 2 Zahlen zu erhalten

+0

Für welche Fälle ist es korrekt? Für welche Fälle ist es falsch? Bitte geben Sie ein [minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) an. – Galen

+0

für 17 und 9 ist die Antwort richtig. –

+0

für 17 und 6 ist die Antwort falsch –

Antwort

3

Seit int comb ist int Sie kehren int zurück!

Es ist egal, dass Sie unsigned long long int first zurückgeben sollen. Das Ergebnis der Division wird auf int Wert gerundet, Genauigkeit geht verloren.

+0

die Antworten sind int in meinen Testfällen, so ist das keine Rundung –

+0

@HannaNassar Kamm ist 'int'. Es kann nur 'int' b passen, k ist' int' und Sie kehren 'long long' zurück. Wenn Sie das Ergebnis als 'lang lang' erwarten, führen Sie keine Operation 'ints' aus. – sg7

Verwandte Themen