This commit is contained in:
2025-02-06 17:11:17 +01:00
parent 55c62ffc5a
commit fb313143a1
5 changed files with 95 additions and 0 deletions

50
Tutorium/tut16/README.md Normal file
View File

@ -0,0 +1,50 @@
---
marp: true
paginate: true
theme: rose-pine
footer: EidP 2024 - Nils Pukropp - https://git.narl.io/nvrl/eidp-2024
style: ".columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; } code { font-family: FiraCode Nerd Font; }"
---
# Tutorium 16 - 2025-02-06
Zusatztreffen, Rekursion
---
## Zusatztutorium - 13.02.2025
- Wann?
- 13.02. um 16:00
- nicht ct, also nicht 15 nach
- Wo?
- Gebäude 101
- Wir dürfen dann noch kurz einen Raum suchen
- Was?
- Wir Besprechen die Probeklausur anhand eurer Lösungen
- (Sind bis dahin auch korregiert)
- Fragen?
---
Gib es schon vorab Fragen zu der Probeklausur?
---
## Rekursion
Rekursion ist einfach eine Funktion, die sich selber wieder aufruft.
- Wir brauchen eine Abbruchbedingung
- Wir rufen geschickt rekursiv auf um bei der Abbruchbedingung anzukommen
---
## Beispiele
- Fibonacci
- Node in Tree einfügen
- Knapsack
[Website zum Visualisieren](https://recursion.vercel.app/)

BIN
Tutorium/tut16/slides.pdf Normal file

Binary file not shown.

View File

@ -0,0 +1,4 @@
def fib(n: int) -> int:
if n in {0, 1}:
return n
return fib(n - 1) + fib(n - 2)

View File

@ -0,0 +1,17 @@
import math
def knapsack(items: list[tuple[float, float]], n: int, cap: float) -> float:
if (cap < 0):
return -math.inf
if (n == len(items)):
return 0
return max(
knapsack(items, n + 1, cap),
items[n][0] + knapsack(items, n + 1, cap - items[n][1])
)
if __name__ == '__main__':
print(knapsack([(100, 10), (70, 4), (50, 6), (10, 12)], 0, 12))

View File

@ -0,0 +1,24 @@
from dataclasses import dataclass
from typing import Optional
@dataclass
class Node[T]:
mark: T
left: 'Optional[Node[T]]' = None
right: 'Optional[Node[T]]' = None
type Tree[T] = Optional[Node[T]]
def insert[T](t: Tree[T], value: T) -> Tree[T]:
if t is None:
return Node(value)
if value < t.mark:
t.left = insert(t.left, value)
else:
t.right = insert(t.right, value)
return t