Hallo zusammen. Ich brüte jetzt schon eine weile über Aufgabe eins des 11ten P1 Blattes. Gibt es auch einen Ansatz das ganze ohne Rekursion hinzukriegen? Hab's mit Rekursion versucht aber mal abgesehen davon dass ich das nicht hinkriege machen wir das auch erst in ein paar Wochen in der Vorlesung.
Hab mich da ziemlich festgefahren und bei meiner rekursiven Definition meckert Dr Scheme immer darüber, dass irgendwelche Argumente nicht seinen Erwartungen entsprechen.
Hilfe?
rekursion war heute in der vorlesung dran… iteration auch… oder worauf willst du hinaus?
weiss zwar noch nit wie ich anfang aber schwer sa der bogen net aus
die aufgabe ist auch nicht schwer, wenn man denn rekursion geschnallt hat. im prinzip braucht man nur vier funktionen aus scheme, car, cdr, =, und -.
vielleicht kannst du ja posten worüber dr. scheme meckert, aber bitte nicht die ganze lösung.
guck dir einfach mal slide 187 an, dann wird alles gut :-)
Hatte anfangs auch nicht gedacht, dass die Sache schwer, wird. Ist sie ja eigentlich auch nicht. Eigentlich müsste meine Lösung auch funktionieren, wenn Dr. Scheme nicht so pingelig wäre…
Ah, ok. Hab's jetzt hingekriegt. Lag daran, dass Dr. Scheme keine überflüssigen klammern mag.
also nicht:
if (= x y)
(
(myfunc 1 2)
)
(
(myotherfunc 3 4)
)
sondern:
if (= x y)
(
myfunc 1 2
)
(
myotherfunc 3 4
)
argh! Warum gibt es bloß keinen vernünftigen Scheme interpreter mit ner Vernünftigen GUI? Bei Dr. Scheme funktioniert unter Linux ja nicht mal Copy & Paste anständig!
Ah, ok. Hab's jetzt hingekriegt. Lag daran, dass Dr. Scheme keine überflüssigen klammern mag.
Das liegt nicht an DrScheme, sondern an der Sprache Scheme selbst. Eine Klammer bedeutet "diesen Ausdruck auswerten".
+ => #<primitive procedure +>
(+) => 0
((+)) => ABORT (Versuch, das Ergebnis von (+), also 0, aufzurufen)
argh! Warum gibt es bloß keinen vernünftigen Scheme interpreter mit ner Vernünftigen GUI? Bei Dr. Scheme funktioniert unter Linux ja nicht mal Copy & Paste anständig!
Tja, wenn man nur wüsste wie. Versuchs entweder mit einem mittlerem Mausklick oder Ctrl-y.