i

Endrekursion

Eine alternative Funktionsdefiniton

Die Funktion anzahlBegruessungen wird hier mit einer rekursiven Hilfsfunktion anzahlBegruessungenMitAkku definiert.

anzahlBegruessungenMitAkku: Int -> Int -> Int
anzahlBegruessungenMitAkku anzahlPersonen akku =
    if anzahlPersonen == 1 then 
        akku 
    else 
        anzahlBegruessungenMitAkku (anzahlPersonen-1) (akku + (anzahlPersonen-1))

anzahlBegruessungen: Int -> Int
anzahlBegruessungen anzahlPersonen =
    anzahlBegruessungenMitAkku anzahlPersonen 0 

Die Auswertung eines Funktionsaufrufs verläuft hier so:

anzahlBegruessungen 6 ->
    anzahlBegruessungenMitAkku 6 0 ->
        anzahlBegruessungenMitAkku 5 5 ->
            anzahlBegruessungenMitAkku 4 9 ->
                anzahlBegruessungenMitAkku 3 12 ->
                    anzahlBegruessungenMitAkku 2 14 ->
                        anzahlBegruessungenMitAkku 1 15 ->
                        15
                    15
                15
            15
        15
    15
15

Aufgabe 1

  1. Erkläre die Berechnungsschritte.
  2. Erläutere die Rolle des Parameters akku.
  3. Erläutere den Unterschied zur Berechnung im letzten Abschnitt. Kläre hierzu folgende Frage: Wann steht das Ergebnis der Berechnung fest?

Aufgabe 2

Teste die oben gezeigten Funktionsdefinitionen mit immer größeren Zahlen. Was fällt auf?

> anzahlBegruessungen 10
45 : number
> anzahlBegruessungen 100
4950 : number
> anzahlBegruessungen 1000
499500 : number
> anzahlBegruessungen 10000
49995000 : number
> anzahlBegruessungen 100000
...

Suche

v
8.2.2.10.2.1.4
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/rekursion/begruessungen/lernstrecke/akku
dev.inf-schule.de/8.2.2.10.2.1.4
dev.inf-schule.de/@/page/NYxVc51pa00Vds4U

Rückmeldung geben