jenz: Wie komisch ist das denn?

Beitrag lesen

Hi,
ich bin gerade dabei, ein wenig c++ zu lernen, habe aber ein sehr komisches Problem bei der Funktionsübergabe eines long double. Am besten gebe ich einfach mal die source her, ich habe mit g++ kompiliert.

----------------------------------------------------
#include <iostream>
using namespace std;

long double summe(long double s, long double *f, int n)
{
        if(n>1)
        {
                summe(s+*f++, f, n-1);
        }
        else
        {
                cout << "Berechneter Wert ist " << s << "\n" << s << ", jetzt erfolgt die funktionsübergabe: \n";
                return s;
        }
}

long double summe(long double *f, int n)
{
        return summe(0, f, n);
}

int main(void)
{
        long double x[10];
        for(int i=0;i<10;i++)
        {
                cout << "Bitte Wert " << i+1 << " eingeben \n";
                cin >> x[i];
        }
        cout << "Summe aller Zahlen ist " << summe(x,10) << "\n";
}
---------------------------------------

Kann sich jemand erklären, warum ich im cout-Aufruf der summe-Funktion noch das richtige Ergebnis bekomme, sobald ich aber dieselbe Variable an main übergebe, immer totaler Mist rauskommt?

Schöne Grüße,
Jens