i

Endrekursion

Eine alternative Funktionsdefiniton entwickeln

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

(a) Erkläre die Berechnungsschritte.

(b) Erläutere die Rolle des Parameters akku.

(c) 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
110.2.7.1.1.4
inf-schule.de/fp_elm_alteversion/elm_programme/rekursion/begruessungen/lernstrecke/akku
inf-schule.de/110.2.7.1.1.4
inf-schule.de/@/page/NYxVc51pa00Vds4U

Rückmeldung geben