Hallo 1unitedpower,
mit der iterativen Version von natE komme ich auch weiter.
Es liegt vielleicht an meiner Implementation, aber bei mir ist das Timing von multE nicht symmetrisch. multE(3, 1000) läuft schneller als multE(1000, 3). Bei meinen Tests zur Fakultät hieß das:
Rechnung | Gut | Schlecht |
---|---|---|
4! | <2ms | <2ms |
5! | <2ms | <2ms |
6! | 3ms | 5ms |
7! | 6ms | 41ms |
8! | 24ms | 1853ms |
9! | 176ms | ♾️ |
10! | 2317ms | |
11! | 34000ms |
Die 12! mit dem besseren Zweig habe ich mir dann verkniffen.
Ich habe dann noch zum Testen die multE Funktion durch eine Integer-Multiplikation und to(wert) ersetzt. from(nat) hatte ich ja schon - wie anderswo geschrieben, durch das debugValue Property gepimpt. Die to-Implementierung habe ich iterativ gemacht, ohne Rekursion, ohne natE, also die Succ-Kette so schnell wie möglich aufgebaut. Damit sank 11! von 34 auf 7 Sekunden. Aber 12! Fakultät ließ sich nicht mehr berechnen, Chrome hat mir auf einmal das Script beendet und einen traurigen Smiley gezeigt 😂
Rolf
sumpsi - posui - obstruxi