Rekursion i funktionell programmering

Programmeringsparadigm – grundläggande koncept

Eleanor Thomas

Senior Data Analytics Engineer

Vad är rekursion?

  • Rekursiv funktion: en funktion som anropar sig själv
  • Måste innehålla ett avslutningsvillkor, eller basfall
  • Innehåller också det rekursiva anropet med modifierad indata
0 | def my_recursive_function(input_value):
1 |     # base case
2 |     if base_case_condition:
3 |        return base_case_output_value
4 |     # recursive call
5 |     else:
6 |        return my_recursive_function(modified_input_value) + some_modification
Programmeringsparadigm – grundläggande koncept

Varför använda rekursion?

  • Vissa problem är enklare att definiera rekursivt
  • Fibonacci-tal:
    • 0, 1, ...
    • 0, 1, 1, ...
    • 0, 1, 1, 2, ...
    • 0, 1, 1, 2, 3, ...
Programmeringsparadigm – grundläggande koncept

Fler exempel på rekursion

Ett filsystem

  • Sökning i ett filsystem
Programmeringsparadigm – grundläggande koncept

Fler exempel på rekursion

Ett filsystem; en sorteringsalgoritm

  • Sökning i ett filsystem
  • Vissa sorteringsalgoritmer, till exempel Merge Sort
Programmeringsparadigm – grundläggande koncept

Fler exempel på rekursion

Ett filsystem; en sorteringsalgoritm; en datastruktur

  • Sökning i ett filsystem
  • Vissa sorteringsalgoritmer, till exempel Merge Sort
  • Olika datastrukturer definieras rekursivt
Programmeringsparadigm – grundläggande koncept

Rekursion kontra iteration

  • Varje rekursiv funktion kan också skrivas iterativt
  • En iterativ funktion använder en loop i stället för ett rekursivt anrop
def iterative_factorial(n):
    result = 1
    for i in range(1, n + 1):
        result = result * i
    return result
Programmeringsparadigm – grundläggande koncept

Nu kör vi en övning!

Programmeringsparadigm – grundläggande koncept

Preparing Video For Download...