Ich hatte eine Aufgabe in der Schule letzte Woche, um eine Funktion zur Berechnung der n: th-Nummer in der Fibonacci-Sequenz zu implementieren. Eine 'Sub-Zuweisung' bestand darin, sie unter Verwendung von Akkumulation (möglicherweise keine korrekte Übersetzung) zu implementieren, um der Funktion O (n) Zeitkomplexität zu geben. Das alles hat gut funktioniert, bis ich versuchte, die Funktion zu machen (Int -> Integer). Indem ich ein bisschen experimentierte, erkannte ich, dass die Zeitkomplexität nahe bei O (n^2) für wirklich große Zahlen war. Es kommt mir vor, dass dies wegen der Integer-Implementierung sein muss, was mich ein bisschen neugierig macht, wie es funktioniert. Ich habe ein paar Google-Suchen durchgeführt und nichts gefunden, was nützlich schien, also wende ich mich an euch, in der Hoffnung, entweder eine Erklärung oder einen Link zu bekommen, der es gründlich erklärt.Integer Zeit Komplexität in Haskell
Mein Code:
ackfib 0 = 0
ackfib 1 = 1
ackfib n = loop n 1 0 1
where
loop n n1 n2 i
| i < n = loop n (n1+n2) n1 (i+1)
| i == n = n1
| i > n = error "n must be greater than or equal to 0"
ich für alle dankbar bin Antworten
Viktor
Wie üblich, poste deinen Code. – Juliet
Hier geht es nicht um meinen Code, sondern um die Implementierung des Integer-Typs. – vichle
Wir können keine Erklärung erstellen, ohne das ganze Bild zu sehen. Was ist in diesem Fall Ihr Code? – Juan