[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Debian] Informatik-Frage (OT?)



Hallo,

Nils Kassube schrieb:
>* Jens Benecke <jens@jensbenecke.de> [2001-04-11 21:09]:
>
>> Gesucht: Alle möglichen Zweierkombinationen in _eine_ Richtung,
d.h.
>> ab,ac,ad,ae,bc,bd,be,...,de, _nicht_ aber ba oder eb. Da es nicht
fünf
>> sondern potenziell mehrere hundert Elemente sind, suche ich nach
einem
>> _schnellen_ Algorithmus, der dies bewerkstelligt.
Programmiersprache egal,
>> meinetwegen Pseudocode.
>
>> Bisher bin ich nur auf was rekursives gekommen:
>
>Äh, hoffentlich verstehe ich das Problem richtig. Ich sehe in der
>Aufgabenstellung eine offensichtliche, nicht rekursive Lösung:
>
>--cut--
>L = ["a","b","c","d","e","f"]
>res = []
>
>for x in range(len(L)-1):
>        start = x+1
>        elem = L[x]
>        for y in range(start,len(L)):
>                res.append(elem+L[y])
>
>print res
>--cut--
>

auch das ist rekursiv, denn die Funktion ruft sich so oft auf, bis
eine bestimmte Bedingung erfüllt ist (gehört das jetzt ins Thema
"Eindeutschung"? ;-)).

>Wozu braucht man das?

In der der Wahrscheinlichkeitsrechnung ist das die so genannte
Fakultät. Damit kannst Du zum Beispiel ausrechnen, wie oft neun
Familienmitglieder in unterschiedlichen Tischordnungnen zusammen
sitzen können (362880-mal, wie letzte Woche im Spiegel zu lesen war).
In C liest sich das etwa so:

long int fakultaet(n)

int n;

{
    int i;
    long int prod = 1;

    if (n > 1)
        for  ( i = 2; i <= n; ++1)
            prod *= i;
    return(prod);
}

oder schön rekursiv:

long int fakultaet(int n)

int n;

{
    if(n <= 1)
        return(1);
    else
        return (n * fakultaet(n - 1));
}

Freundliche Grüße
Thomas Hümmler

--
Thomas Hümmler, M.A. * thomas@huemmler.de * www.huemmler.de
REDAKTIONSBÜRO T.O.M. * Gsprait 1 * D-85560 Ebersberg
Phone: +49 (0 80 92) 8 38 33 Fax: +49 (0 80 92) 8 38 34



-- 
-----------------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie bitte eine
E-Mail an debian-user-de-request@lehmanns.de die im Subject
"unsubscribe <deine_email_adresse>" enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@Lehmanns.de
-----------------------------------------------------------

790 eingetragene Mitglieder in dieser Liste.


Reply to: