Jenz: Wie komisch ist das denn?

Beitrag lesen

Eben nochmal getestet: Mit Microsoft VC++ 6 kommt bei
beiden Varianten das falsche Ergebnis 10 heraus (hm...).
Anscheinend gibt es hinsichtlich der Interpretation
der Auswerte-Reihenfolge von Funktionsparametern
noch weiteren Spielraum.

g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
Das übrigens meine Version. Das dann schon 4.2 es gerade anders machen soll, ist auch seltsam. Irgendwelche Schalter hab ich nicht verwendet.

Warum muss es überhaupt eine rekursive Funktion sein?

http://forum.de.selfhtml.org/?t=176801&m=1163923 :-)
Habe als Nebenfach Informatik und bis jetzt die Programmiersprachen-1 Vorlesung gehört, wo wir anhand Scheme, einer sehr beschränkten Sprache so einige strukturelle Möglichkeiten besprochen haben (auch eine Pseudo-OO programmiert haben, Scheme ist ja nicht nativ eine OOP).
Dass das laufzeittechnisch erstmal nicht so günstig ist, ist schon klar, aber es hat eine gewisse Eleganz, finde ich, und ich bin ja noch am Üben.

Wenn Du ein Array von 100000 Elementen summierst, werden
100000 mal je drei Funktionsparameter, sowie die Rücksprungadresse
auf dem Stack abgelegt, der einem bei dieser Gelegenheit
leicht mal um die Ohren fliegen kann.

Stack ist sowas wie der "Hafen", von dem aus der Funktionaufruf abgeschickt wird und damit der Platz, auf dem die Antwort wieder ankommen kann, richtig?

Ein einfacher Dreizeiler mit einer Schleife
(wie in meinem anderen Post bereits gezeigt)
sollte es in jedem Fall tun.

Falls es partout keine Schleife sondern
eine rekursive Funktion sein muss (Aufgabenstellung?!),
würde ich die Anzahl der Parameter möglichst gering halten,
etwa so:

long double summe3(long double *f, int n) {
if(n>1) return f[n-1]+summe3(f, n-1);
else return *f;
}

  
Aha, sehr gut.