Deshalb meine bereits erwähnte Verbesserung.
Ok, wir haben:
[icode]while (--n > 0) {[/icode]
falsch,
[icode]while (--n >= 0) {[/icode]
richtig,
[icode]for (int i = 0; i < n; i++) {[/icode]
richtig, aber 4. Variable,
[icode]while (0 < n--) {[/icode]
richtig, aber post-increment und echt kleiner,
daraus wird branch if equal, branch if not equal usw.
Ich behaupte jetzt, 1. post-increment ist langsamer als pre-increment, und 2. echt kleiner ist schneller als größer-gleich-als [*]. Somit heben sich beide wechselseitig auf. Damit wären wir beim Thema Mikrooptimierung, wonach wahrscheinlich nicht gefragt wurde.
[*] Weiß es jemand besser, möge er mich korrigieren.
Es müsste jetzt gemessen werden, die nicht rekursive Methode ist aber so schnell, dass ein messen mit long-Werten mir nicht sinnvoll erscheint.