\documentclass{article}
\usepackage{amsmath}
\usepackage{listings}
\usepackage{xcolor}

\definecolor{codegray}{rgb}{0.9,0.9,0.9}
\lstdefinestyle{pythonstyle}{
    backgroundcolor=\color{codegray},
    basicstyle=\ttfamily\footnotesize,
    language=Python,
    frame=single,
    keywordstyle=\color{blue},
    commentstyle=\color{gray},
    stringstyle=\color{red}
}

\begin{document}

\title{Python Übungsaufgaben: Funktionen, Iteration und Rekursion}
\date{28. Februar, 2025}
\maketitle

\section*{Aufgabe 1: Einfache Funktionen}

\subsection*{Quadrat einer Zahl}
Schreibe eine Funktion, die das Quadrat einer Zahl berechnet.

\begin{lstlisting}[style=pythonstyle]
def square(n):
    return n*n
\end{lstlisting}

\subsection*{Maximalwert zweier Zahlen}
Schreibe eine Funktion, die den größeren von zwei gegebenen Zahlen zurückgibt.

\begin{lstlisting}[style=pythonstyle]
def min_value(a,b)
    return min(a,b)
\end{lstlisting}

\subsection*{Umwandlung von Celsius in Fahrenheit}
Schreibe eine Funktion, die eine Temperatur in Celsius in Fahrenheit umwandelt.

\begin{lstlisting}[style=pythonstyle]
def convert_c_to_f(n):
    return n*(9/5)+32
\end{lstlisting}

\subsection*{Summation einer Liste}
Schreibe eine Funktion, die die Summe aller Elemente in einer Liste berechnet.

\begin{lstlisting}[style=pythonstyle]
def convert_c_to_f(n):
    sum = 0
    for item in b:
        sum += item
    return sum
\end{lstlisting}

\section*{Aufgabe 2: Fakultät mit Iteration und Rekursion}
Berechne die Fakultät einer Zahl $n$ sowohl iterativ als auch rekursiv.

\subsection*{Iterative Lösung}
Schreibe eine iterative Funktion zur Berechnung der Fakultät.

\begin{lstlisting}[style=pythonstyle]
def fakultaet_iterativ(n):
    ergebnis = 1
    for i in range(1, n + 1):
        ergebnis *= i
    return ergebnis
\end{lstlisting}

\subsection*{Rekursive Lösung}
Schreibe eine rekursive Funktion zur Berechnung der Fakultät.

\begin{lstlisting}[style=pythonstyle]
def fakultaet_rekursiv(n):
    if n == 0:
        return 1
    return n * fakultaet_rekursiv(n - 1)
\end{lstlisting}

\section*{Aufgabe 3: Fibonacci-Zahlen}
Berechne die Fibonacci-Zahlen $F(n)$ mit $F(0) = 0$, $F(1) = 1$ und $F(n) = F(n-1) + F(n-2)$ für $n \geq 2$.

\subsection*{Iterative Lösung}
Schreibe eine iterative Funktion zur Berechnung der Fibonacci-Zahlen.

\begin{lstlisting}[style=pythonstyle]
def fakultaet_rekursiv(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
    return a
\end{lstlisting}

\subsection*{Rekursive Lösung}
Schreibe eine rekursive Funktion zur Berechnung der Fibonacci-Zahlen.

\begin{lstlisting}[style=pythonstyle]
def fibonacci_rekursiv(n):
    if n <= 1:
        return n
    return fibonacci_rekursiv(n - 1) + fibonacci_rekursiv(n - 2)
\end{lstlisting}

\end{document}
