Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Fakultät !!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
29.10.2003, 15:34 Uhr
Pablo
Supertux
(Operator)


ich bin ja blind.... @virtual: du hattest Recht. Ich hab nämlich nicht alles gelesen und da stand long long ist nicht ANSI. Sorry, aber das was mein Fehler, dass ich nicht alles gelesen hab und mir fiel nur das auf, dass neben %L stand ist not ANSI.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
29.10.2003, 15:39 Uhr
0xdeadbeef
Gott
(Operator)


Es gibt keine Fakultät für Fließkommazahlen. Die sinnvolle Verallgemeinerung ist die Gamma-Funktion. Für natürliche Zahlen n gilt n! = Gamma(n+1), für x aus R ist

Code:
                        m^x m!
Gamma(x) = lim    -------------------
         m -> oo  x(x+1)(x+2)...(x+m)


Man trifft auch die Formel

Code:
                 ,-
    1        1   | e^t dt
-------- = ----  o ------
Gamma(x)   i2pi  |  t^z
                _'


wobei der Integrationspfad bei -oo beginnt und einen Kreis im Gegenuhrzeigersinn beschreibt.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 29.10.2003 um 15:49 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
30.10.2003, 09:58 Uhr
ao

(Operator)



Zitat:
Windalf postete
@virtual
an der stelle fällt mir wieder folgende Frage ein die ich irgendwie mal vergessen hatte.
Ist es eigentlich "schlau" rekursive funktionsaufrufe zu machen oder ist es performanter das direkt zu implementieren.


Wenn du mit direkter Implementierung etwas in dieser Art meinst:

C++:
long fak (long n)
{
    long f = 1;
    while (n > 0)
    {
        f *= n;
        n--;
    }
    return f;
}


dann würde ich raten, es ist wahrscheinlich performanter als die rekursive Funktion, weil der Overhead für das wiederholte Aufrufen entfällt.

Die Fakultät ist, weil die Materie so einfach ist, das typische Einführungsbeispiel für Rekursion. Eine sinnvolle Anwendung ist es meiner Meinung nach aber nicht, eben weil die Aufgabe so einfach ist, dass sie iterativ genauso schnell und übersichtlich gelöst werden kann.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
30.10.2003, 11:07 Uhr
(un)wissender
Niveauwart


Deckt sich nicht mit meinen Erfahrungen:
Teilweise sind rekursive Algorithmen schlicht schneller als alles was du iterativ machen kannst.
Nämlich dann, wenn du darüber Buch halten musst, was die Funktionsaufrufe für dich erledigen.
Geh mal los und programmiere einen iterativen Baumdurchsuchalgo, ich denke nicht, dass die iterative Lösung schneller ist, und schon gar nicht besser verständlich (was für dich sehr wichtig ist).

@Windalf und ao
Die Berechnung der Fakultät ist natürlich iterativ deutlich besser als rekursiv!
--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 30.10.2003 um 11:27 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
30.10.2003, 11:58 Uhr
ao

(Operator)



Zitat:
(un)wissender postete
Geh mal los und programmiere einen iterativen Baumdurchsuchalgo, ich denke nicht, dass die iterative Lösung schneller ist, und schon gar nicht besser verständlich (was für dich sehr wichtig ist).


Völlig richtig. Was ich oben geschrieben habe, bezog sich auch nur auf die Anwendung mit der Fakultät.

Das Beispiel Fakultät ist so trivial, dass es nur geeignet ist, um frei von jeglichem Ballast zu zeigen, wie Rekursion überhaupt geht.

Die Vorteile von Rekursion gegenüber Iteration werden daran nicht deutlich, dazu ist es zu primitiv. Dafür nimmt man besser so was wie die von dir erwähnte Baumsuche.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
30.10.2003, 12:39 Uhr
(un)wissender
Niveauwart


Ich hätte deinen Post mal vernünftig lesen sollen, da kann ich mich nicht mehr rausreden, schwant mir!
?
--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 30.10.2003 um 12:40 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
30.10.2003, 15:20 Uhr
0xdeadbeef
Gott
(Operator)


Ob du einen Baum vernünftig durchiterieren kannst, hängt davon ab, wie du ihn aufbaust. Wenn du ihn threadest, ist das kein Problem. Der große Vorteil der Iteration gegenüber der Rekursion ist aber, dass der Speicherverbrauch geringer ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
30.10.2003, 20:56 Uhr
(un)wissender
Niveauwart


Was meinst du mit threadest?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
30.10.2003, 21:27 Uhr
0xdeadbeef
Gott
(Operator)


Im Grunde merkst du dir einen Verweis auf das vorige und nächste Element in der Inorder-Traversion. Das musst du nur machen, wenn der entsprechende Verweis eh nicht belegt ist, deswegen verursacht es relativ wenig Overhead.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
31.10.2003, 00:26 Uhr
(un)wissender
Niveauwart


Bin aber nicht überzeugt, das das wenige Speicher und schneller geht als Rekursion.
Bisher habe ich auch nur rekursive Baumalgorithmen gesehen, da muss also was dran sein.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: