C++ programm das mit Funktionen rechnet?

3 Antworten

int f(int n) { if (n==0) return 0; else return h(n) + g(n - 1); }

so einfach:

du darfst nicht die funktion auf die linke seite der anweisung schreiben, also

a = f(n)  ist ok

aber   f(n) = a    ist nicht ok, links mit f(n) angefangen heisst du machst eine funktionsdefinition mit default rückgabewert und default parameterwert ... ich denke ist jedesmal int.

Die Rede ist doch von "natürlichen Zahlen", also ist int schon mal nicht korrekt. Nimm unsigned stattdessen. Und dein Compiler meckert, weil die Prototypen fehlen:

// Erstmal die Prototypen:
unsigned f(unsigned);
unsigned g(unsigned);
unsigned h(unsigned);

// Dann die Implementierung:
unsigned f(unsigned n) {
return n ? h(n) + g(n - 1) : 0;
}

unsigned g(unsigned n) {
return n ? 2 * f(n) : 0;
}

unsigned h(unsigned n) {
return n ? n * h(n - 1) : 1;
}

// Kleiner Test:
int main(void) {
using namespace std;

for (unsigned i = 0; i < 10; ++i) {
cout << "f(" << i << "): " << f(i) << endl;
cout << "g(" << i << "): " << g(i) << endl;
cout << "h(" << i << "): " << h(i) << endl;
cout << endl;
}
}

Damit erhältst du folgende Ausgabe:

f(0): 0                                                                                  
g(0): 0
h(0): 1

f(1): 1
g(1): 2
h(1): 1

f(2): 4
g(2): 8
h(2): 2

f(3): 14
g(3): 28
h(3): 6

f(4): 52
g(4): 104
h(4): 24

f(5): 224
g(5): 448
h(5): 120

f(6): 1168
g(6): 2336
h(6): 720

f(7): 7376
g(7): 14752
h(7): 5040

f(8): 55072
g(8): 110144
h(8): 40320

f(9): 473024
g(9): 946048
h(9): 362880

Soweit alles klar? Falls nicht, suche bei Google mal nach "Elvis-Operator" ... das ist der einzige Punkt bei der Aufgabe, bei dem ein Anfänger Probleme haben könnte, denke ich mir. :)

Schönen Abend noch! :)

PS: Verzeih mir bitte die grauenhafte Codeformatierung, aber der WYSIWYG-Editor hier auf GF ist leider total verbuggt! ><

Was möchtest Du wissen?