Schule: rekursive Funktionsdefintionen
-
Hallo,
Bitte helft mir bei dieser Aufgabe, hatte Probleme mit meinen PC bis heute, musste neu formatieren.
Morgen muss ich das abgeben, ich schaffe das nicht mehr.Wenn ihr das für mich lösen könntet, wäre ich euch unendlich dankbar! Smile
Aufgabe 1 (Punkte: 6)
Gegeben ist folgende rekursive Funktionsdenition:
berechne(0,z) = z+1;
berechne(x,0) = x+1;
berechne(x,z) = berechne(x-1,z) + berechne(x,z-1)
Schreiben Sie ein Programm, welches die Funktion berechne nach obiger Vorschrift
implementiert. Lesen Sie die Werte x und z von der Standardeingabe ein
und geben Sie das Ergebnis wieder auf der Standardausgabe aus. Verwenden
Sie zur Berechnung ganze Zahlen.Oder Tipps.. hauptsache ich habe das bis heute 24:00 Uhr.
Vielen, vielen Dank schonmal!
Gruß.
-
Welche Programmiersprache? Was hast du schon? In Erlang zum Beispiel kannst du die Aufgabenstellung praktisch abschreiben:
module(test). export([berechne/2]). berechne(0, Z) -> Z + 1; berechne(X, 0) -> X + 1; berechne(X, Z) -> berechne(X - 1, Z) + berechne(X, Z - 1).
-
Na C++ ist es (siehe Kategorie C++).
-
Hausaufgaben machen musst du selbst. Ohne Code wird hier nichts geholfen..
Versuch es wenigstens, dann kommen auch Vorschläge von uns..
-
Hm, in der Angabe steht doch im Grunde schon die komplette Lösung.

Wie die anderen bereits gesagt haben: Zeig uns was du bereits hast, dann können wir dir helfen. Aber eine fertige Lösung klatschen wir dir nicht hin. Sonst wären die 6 Punkte ja auch unverdient;)
-
mal in worten:
bitte-helft-mir-bin-heule schrieb:
berechne(0,z) = z+1;
du sollst 'ne funktion proggen, die zwei werte annimmt. ist der erste 0, dann soll sie den zweiten, um eins erhöht, zurückgeben.
bitte-helft-mir-bin-heule schrieb:
berechne(x,0) = x+1;
das gleiche soll sie auch mit dem anderen wert tun.
bitte-helft-mir-bin-heule schrieb:
berechne(x,z) = berechne(x-1,z) + berechne(x,z-1)
sind beide werte nicht 0, dann soll sie sich selbst zwei mal aufrufen. übergeben werden dabei die eingangswerte, allerdings im ersten fall wird vom ersten eins abgezogen und im anderen fall wird vom zweiten eins abgezogen. die ergebnisse beider aufrufe gibt die funktion als summe wieder zurück.
bitte-helft-mir-bin-heule schrieb:
Lesen Sie die Werte x und z von der Standardeingabe ein
und geben Sie das Ergebnis wieder auf der Standardausgabe aus.erklärt sich wohl von selbst.
bitte-helft-mir-bin-heule schrieb:
Verwenden
Sie zur Berechnung ganze Zahlen.d.h. du solltest nicht float und auch nicht double verwenden. erlaubt sind char, int, long usw.

-
Aufgabe 1 (Punkte: 6)
Gegeben ist folgende rekursive Funktionsdenition:
berechne(0,z) = z+1;
berechne(x,0) = x+1;
berechne(x,z) = berechne(x-1,z) + berechne(x,z-1)
Schreiben Sie ein Programm, welches die Funktion berechne nach obiger Vorschrift
implementiert. Lesen Sie die Werte x und z von der Standardeingabe ein
und geben Sie das Ergebnis wieder auf der Standardausgabe aus. Verwenden
Sie zur Berechnung ganze Zahlen.Jetzt, wo es zu spät ist, kannst Du Dir ja mal ansehen, wie trivial die Funktion ist (der Rest ist ebenfalls pillepalle, deswegen erspar ich mir das.......
)int berechne(int x, int z) { if (x == 0) return z + 1; if (z == 0) return x + 1; return berechne(x - 1, z) + berechne(x, z - 1); }
-
jencas schrieb:
Jetzt, wo es zu spät ist, [...]
Vielleicht muss er die Aufgabe ja in Wirklichkeit erst morgen abgeben. Und da er die allgemeine Meinung zum Thema Hausaufgaben im Forum kennt, hat er diesen Trick ersonnen und dir die Lösung abgeluchst!

-
lol
das problem hier nennt sich ackermann funktion, wozu die gut ist wies ich so nicht, aber ich bin heute zufällig bei nem kollegen mit in seinen informatik unterricht gegangen und die haben das grad gemacht...