INDA - Uppgift 6 2006/2007


Uppgiften ska lämnas till din övningsledare på övningen 19,20/10. Glöm inte försättsbladet (pdf) och att alla papper ska häftas samman eller lämnas in i en plastficka.

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 avsnitt 4.12-4.13 i programmeringsboken.


Skriftlig uppgift
Gör ändringarna i uppgift 4.52-4.57 i projektet weblog-analyzer och lämna in en uskrift av den modifierade klassen.

Här är två metoder som använder sig av rekursiva metodanrop. Sätt dig in i hur de fungerar och gör sedan två alternativa implementationer som använder iteration (while- eller for-sats).


/**
 * Computes n!.
 * Precondition: 0 <= n <= 20.
 * (20! < 2^63 - 1, the maximum value of a long.)
 */
public long factorial(int n) {
    if (n == 0) {
        return 1;
    } else {   // n > 0
        return n*factorial(n - 1);
    }
}

/**
 * Computes the sum of the elements from v[first] to v[last].
 * Precondition: 0 <= first <= last < v.length.
 */
public long sum(int[] v, int first, int last) {
    if (first == last) {
        return v[first];
    } else {   // first < last
        return v[first] + sum(v, first + 1, last);
    }
}
Gör två implementationer, en iterativ och en rekursiv, av en metod som returnerar det maximala värdet i en vektor. Metoden ska ha följande signatur:

public int max(int[] v)


Valfri uppgift
Gör även uppgift 4.58 och 4.59 i projektet weblog-analyzer.



Stefan Nilsson
2006-09-15