Hier sind zwei Versionen von Code, den ich schreibe, um die Anzahl der abschließenden Nullen in n zurückzugeben. Die erste Version gibt 452137080
für den Eingang 1808548329
zurück, die zweite Version gibt 452137076
für den Eingang 1808548329
zurück. Fragst du dich, warum es einen Unterschied gibt? Die Ausgabe von der 2. Version ist korrekt.Inkonsistente Ergebnisse beim Suchen von faktoriellem Nullpunkt
Quellcode in Java,
public class TrailingZero {
public static int trailingZeroes(int n) {
int result = 0;
int base = 5;
while (n/base > 0) {
result += n/base;
base *= 5;
}
return result;
}
public static int trailingZeroesV2(int n) {
return n == 0 ? 0 : n/5 + trailingZeroesV2(n/5);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(trailingZeroes(1808548329));
System.out.println(trailingZeroesV2(1808548329));
}
}
Mögliches Duplikat von [gibt unterschiedliches Ergebnis zurück, um faktorielle nachgestellte Null zu finden] (http://stackoverflow.com/questions/42754047/return-different-result-to-find-factorial-trailing-zero) –
(Der rekursive Aufruf Vielleicht wurde es korrigiert. (Es könnte helfen, dies explizit zu sagen und auf die vorherige Frage zu verweisen.)) Sehen Sie sich die Größe von 'Basis' an. – greybeard