Wie zu implementieren Java-Methode ln(n!)
rekursiv zu berechnen?Java-Methode für die Berechnung ln (n!) Rekursiv
Das ist meine Lösung. Ich weiß, dass es falsch ist, aber das ist die einzige Lösung, die mir bisher gekommen ist.
double func(int n) {
double result;
if(n == 1)
return 1;
result = func(n-1) * n;
return Math.log(result);
}
Dies ist, was die Funktion gibt:
func(2) = 0.6931471805599453 (correct)
func(3) = 0.7320993680864453 (should be: 1.79175946922805500081)
func(4) = 1.0744553356380115 (should be: 3.17805383034794561964)
Ihre Lösung ist nicht falsch, aber es gibt Möglichkeiten, dies zu berechnen, die größere 'n' ohne Überlauf bewältigen können. –
Wenn Sie die Methode selbst nicht aufrufen, ist kein rekursiver Aufruf. – danielbathke
Ja, natürlich. Sie möchten die Ingamma-Funktion: http://mathworld.wolfram.com/LogGammaFunction.html. Grundlegende faktorielle Implementierungen, insbesondere die rekursiven, sind fehlgeleitet. – duffymo