bild
Skolan för
datavetenskap
och kommunikation
KTH / CSC / Kurser / DD1341 / inda10 / Vårens uppgifter / Uppgift 1

Uppgift 1 våren 2011

Uppgiften ska lämnas till din övningsledare på övningen fredagen 21 januari. Glöm inte försättsbladet (pdf).

För godkänt måste du ha gjort samtliga deluppgifter. Det är tillåtet att göra enstaka fel och misstag men det är viktigt att du försöker lösa samtliga uppgifter. Om du kör fast med någon uppgift så finns det som vanligt hjälp att få på labbarna.

Hemuppgift

Studera kapitel 8 i programmeringsboken och läs också följande texter om

Skriftlig uppgift

Lämna in lösningar till uppgift 8.12, 8.15 samt 8.16 i programmeringsboken.

Här är två algoritmer som beräknar xn, där x är ett flyttal och n ett ickenegativt heltal.

double expIterativ(double x, int n) {
    double res = 1.0;

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

double expRekursiv(double x, int n) {
    if (n <= 4)
        return expIterativ(x, n);

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

Argumentera för att algoritmerna är korrekta. Du kan till exempel använda en loopinvariant respektive ett induktionsbevis.

Beräkna tidskomplexiteten i värstafall för båda algoritmerna. Ange resultatet med hjälp av ordo-notation.

Copyright © Sidansvarig: Stefan Nilsson <snilsson@nada.kth.se>
Uppdaterad 2011-01-16