Tom: Wie komisch ist das denn?

Beitrag lesen

Hello,

#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);
//>                 summe(s+*f++, f, n-1);
                  cout << "if n_" << n << "=" << s << endl;

}
        else
        {
                cout << "Berechneter Wert ist " << s << "\n" << s << ", jetzt erfolgt die funktionsübergabe: \n";

//>                 return s;

}

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";
}

Schau Dir diese Version nochmal an.
Dann sollte klar werden, was passiert.
Nun wird zwar in jeder Instanz ein Erbebis zurückgegeben, das landet aber in seinem eignen Stackframe und wird von der nächsten Instanz gar nicht abgeholt.

Entweder, Du entscheidest Dich dafür, die Summe als Referenz zu übergeben, oder du verpasst Der Funktion "summe(long double s, long double *f, int n)" einen Rückgabewert, was ich für besser hielte.

Liebe Grüße aus Syburg bei Dortmund

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de