Zitat von
kkkiwi:
--> dann hätte ich das selbe programm aber nur anderst geschrieben?, oder!?
Nein, was ich dir jetzt geschrieben habe sollte dir als Ergebnis das liefern, was du am Anfang erwartet hast (Zumindest, wenn du das "DownTo 2" in "DownTo 1" änderst.
)
Es ist (meistens) überhaupt kein Problem, eine Rekursion in eine Schleife umzubasteln. Die Diskussion hatte wir neulich mal in der CodeLib.
Das schöne an einer Rekursion ist, daß man in den meisten Fällen recht schnell erkennen kann, was die Funktion eigentlich tut.
Um das Schleifen-Pendant der ursprünglichen Funktion zu erhalten, mußt du einfach das "+ (z-1)" entfernen, das hab ich ja nur für dich eingefügt, weil du das ja erwartet hast.
Zitat von
kkkiwi:
also bei diesen rekursions programmen, rufe ich immer wieder meine zahl auf, subtrahiere in dem fall -1 und behalte alle rechnungen von vorher bei, und addier sie dann alle zusammen, und des wars dann?!?
Sozusagen. Genaugenommen mußt du es dir so vorstellen, daß der Computer die Funktion aufruft. Dann sieht er, daß er die Funktion nochmal aufrufen muß, usw. Irgendwann ist z 1 und die Funktion gibt 1 zurück. Jetzt geht er eine Ebene zurück, addiert 1 zu 2*2, gibt das als Ergebnis zurück. Dann geht er wieder eine Ebene höher, addiert 5 zu 3*3. Wieder eine Ebene höher: 14 + 4*4. Jetzt ist er auf der höchsten Ebene, kann also einfach 30 zurückgeben.
//Edit:
So, und warum hab ich jetzt mal wieder nicht gesehen, daß während ich geschrieben habe gleich mehrere Beiträge gepostet wurden?
Zitat von
omata:
Es gilt: Punkt vor Strichrechnung
Wobei das ja jetzt hier mit der Rekursion eher weniger zu tun hat...
Zitat von
Hansa:
Wers glaubt wird selig.
Erkläre mal, wie du in der Rekursion "zurückläufst". Würde mich mal interessieren.
Boah, bist du fies!
//Edit2: Falls jemand das letzte Quote liest und sich wundert:
Hier is noch alles in Ordnung, die Reihenfolge stimmt noch.