Tom: Wie komisch ist das denn?

Beitrag lesen

Hello,

habe Dir eine Lösung gebastelt, die funktioniert.

//============================================================================
// Name        : Rekursion.cpp
//============================================================================

#include <iostream>
using namespace std;

//-----------------------------------------------------------------------------
template <typename T>
T array_sum(T sum, T* array, int count )
{
 if (count > 0)
 {
  sum += array[count-1] + array_sum<T>(sum, array, count-1);
//  cout << "Summe " << sum << ", count: " << count << endl;  // zur Kontrolle
 }

return sum;
}

//=============================================================================
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 " << array_sum<long double>(0, x, sizeof(x)/sizeof(x[0])) << endl;

}

Es ist notwendig, die aktuelle Summe an die Funktion zu übergeben. Wenn die Funktion eine echte Funktion ist, also einen Rückgabewert hat (hier die Summe), dann reicht es, die aktuelle Summe als Kopie an die Funktion zu übergeben. Wenn Du die neue Summe allerdings nicht im Rückgabewert haben willst, dann musst Du sie als Referenz übergeben. Dann kannst Du nachher natürlich nicht einfach das Ergebnis an den Stream übergeben, oder Du musst den <<-Operator überladen, was bei komplexen Datentypen ja ohnehin notwendig wird.

Liebe Grüße aus Syburg bei Dortmund

Tom vom Berg

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