# Aufgabe 3 - Fibonacci mit Tail-Rekursion

## Ziel der Aufgabe
Implementiere die Fibonacci-Funktion mit **Tail-Rekursion**, ähnlich wie die `factorialTail`-Funktion. Die Lösung soll eine Hilfsfunktion mit einem Akkumulator verwenden.

<details>
  <summary>Spoiler: Klicke auf den Pfeil für factorialTail</summary>
 
```haskell
factorialTail :: Integer -> Integer -> Integer
factorialTail 0 acc = acc
factorialTail n acc = factorialTail (n - 1) (n * acc)

factorial :: Integer -> Integer
factorial n = factorialTail n 1
```
</details>


## Signatur
```haskell
fibonacciTail :: Integer -> Integer -> Integer -> Integer

```

## Beispiel Testfäle
```
fibTail 0 -- 0
fibTail 1 -- 1
fibTail 5 -- 5
fibTail 10 -- 55
fibTail 15 -- 610
```

## Anforderungen
- Implementiere fibonacciTail, eine Hilfsfunktion mit einem Akkumulator
- Implementiere fibonacci, die fibonacciTail mit den Startwerten 0 und 1 aufruft
- Nutze keine if-Statements, sondern Pattern Matching
- Nutze Tail-Rekursion für eine speichereffiziente Lösung

## Hinweise
<details>
  <summary>Klicke auf den Pfeil für Hinweise</summary>
 
- fibonacciTail benötigt drei Parameter:
  - 1: n (die Anzahl der Schritte)
  - 2: a (die vorherige Fibonacci-Zahl)
  - 3: b (die aktuelle Fibonacci-Zahl)
- Wenn n == 0 ist, gib a zurück
- Wenn n == 1 ist, gib b zurück
- Ansonsten rufe die Funktion rekursiv mit n - 1 auf und verschiebe a und b
</details>