---
# System prepended metadata

title: Homework 13 - Komplexitet och Korrekhet

---

# Homework 13 - Komplexitet och Korrekhet

Lämna in uppgiften som en PDF i ett gitrepo som heter kth-id-hw13

## 1 Induktion
![](https://i.imgur.com/pGImUwO.png)

![](https://i.imgur.com/RdMxyax.png)

Avnänd induktion för att bevisa dessa

## 2 Iterativ korrekhet

Bevisa korrekthet för denna iterativa funktion och ange dess tidskomplexitet

```c
double expIterative(double x, int n) {
    double res = 1.0;

    for (int i = 0; i < n; i++) {
        res *= x;
    }
    return res;
}
```

## 3 Rekursiv korrekhet
Bevisa korrekhet för denna rekursiva funktion och ange dess tidskomplexitet

```c
double expRecursive(double x, int n) {
    if (n <= 4) {
        return expIterative(x, n);
    }

    return expRecursive(x, n/2) *
           expRecursive(x, (n + 1)/2);
}
```

Hint: Använd mästarsatsen

## Material
* [Loop invarianter video](https://www.youtube.com/watch?v=vVdDyI1PIUU)
* [Loop invarianter](https://yourbasic.org/algorithms/loop-invariants-explained/)
* [Mästar satsen video](https://www.youtube.com/watch?v=sorlJiiWDRA)
* [Mästar satsen](https://yourbasic.org/algorithms/time-complexity-recursive-functions/)


- [**slides**](https://docs.google.com/presentation/d/1pyO6ooeJvRKA48TOltWsviRkSbNGUa8N0ep0scZTVp0/edit?usp=sharing)

