FAGPORTALEN

Rekursion og memoization

It A · STX · A-niveau · Avanceret programmering

💻 Rekursion og memoization

Rekursion er en teknik hvor en funktion kalder sig selv for at løse et delproblem. Grundlæggende struktur:

1.

Basistilfælde: stopper rekursionen.

2.

Rekursivt tilfælde: opdeler problemet.

Fibonacci-eksempel: fib(n) = fib(n-1) + fib(n-2) med fib(0)=0, fib(1)=1. Naiv rekursion: eksponentiel tidskompleksitet O(2ⁿ) fordi genberegner.

Memoization: cache resultaterne af dyrere funktionskald for at undgå genberegning. Implementeres med dict (Python) eller @functools.lru_cache. fib(50) med memoization: O(n) mod O(2ⁿ) uden.

Tørn-basede eksempler: merge sort (opdel list → sortér halvdele → merge), QuickSort (vælg pivot → partition → sortér sub-lister), Tower of Hanoi (flytte n skiver via 3 pinde).

Kald-stakken: hvert rekursivt kald tilføjer en frame. Python's standard stack limit: 1000 kald.

Tail recursion: i sprog som Scheme er tail-rekursion optimeret (TCO). Python har ikke TCO.

Dynamisk programmering (bottom-up alternativ til memoization top-down): byg løsning systematisk fra basistillfælde.

Læringsmål

Sådan kan du arbejde med emnet

Arbejd iterativt med prototyper og dokumentation. Test, evaluér og dokumentér.

Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.

Prøv Fagportalen gratis

🤖 Denne side er skrevet med kunstig intelligens og fagligt gennemgået af Fagportalen, som har det redaktionelle ansvar. Finder du en fejl, så skriv til support@fagportalen.dk.