Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Kojack

Trainee

  • "Kojack" started this thread

Posts: 97

Date of registration: Oct 10th 2006

1

Monday, November 6th 2006, 12:00pm

Scheme Ü-Blatt 3

Also erstmal wollte ich mich mal generell über dieses aufwändige Ü-Blatt beschweren, selbst wenn ich nen Plan hätte, dauert die Bearbeitung bestimmt pro Aufgabe 1-2 Std und das finde ich ist eindeutig zu lange...

Nun gut, ich habe mich inzwishcne zwei einhalb Stunden an der ersten Aufgabe versucht und habe auch ein schönes Ergebnis für (f 10) bekommen, nur leider war das nicht gleich der Vorgabe.
Scheinbar bin ich einfach zu doof den mathematischen Zusammenhang zu kapieren, der hinter dieser Aufgabe steckt. Falls das jemand schon fertig hat, bzw gleich durchschaut, bitte ich hiermit denjenigen, mir das wie für einen 6 Jährigen zu erklären. Vielen Dank schonmal.
Niveau sieht von unten oft aus wie Arroganz

Kaos

Lesen, denken, flamen!

  • "Kaos" is male

Posts: 973

Date of registration: Oct 16th 2005

Location: Han. / Vahrenwald Sinnvolle Beiträge: 7

2

Monday, November 6th 2006, 12:53pm

Endlich kann ich auch zu so nem Mist mal was posten :D 1 Jahr nur sinnlose Spams :D

Also, Aufgabe 1 ist eigentlich ziemlich einfach.
Was die genau bewirkt, kann ich dir nicht sagen, aber dass sollte auch nicht interessant sein oder?

Der ganze Spaß sieht ungefähr so aus:

Source code

1
2
3
4
(define (blubb n)
 (if (Abbruchbedingung)
      n
       else)


So sehe der Spaß rekursiv aus und ist im Prinzip zu 100% abschreibbar.

Gruß Kaos

Quoted

Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.

This post has been edited 1 times, last edit by "Kaos" (Nov 6th 2006, 12:54pm)


Kojack

Trainee

  • "Kojack" started this thread

Posts: 97

Date of registration: Oct 10th 2006

3

Monday, November 6th 2006, 12:58pm

Ja schon, das Ding ist nur dass das Ergebnis stimmen muss, wie ich das Programmiere weiß ich selber, ich wollte wissen was diese Funktion machen soll, da ich immer auf ein anderes Ergebnis komme.
Ich brauche nur die GENAUE Erklärung was das Programm da rechnen soll, mehr nicht.
Niveau sieht von unten oft aus wie Arroganz

Kaos

Lesen, denken, flamen!

  • "Kaos" is male

Posts: 973

Date of registration: Oct 16th 2005

Location: Han. / Vahrenwald Sinnvolle Beiträge: 7

4

Monday, November 6th 2006, 1:35pm

Ok, das Ding an (f 10) zu erklären, ist unmöglich. Das Ding ruft sich so oft selber auf, da kommt man nicht hinterher.

Ich hab das Programm mal "Blubb" genannt und hier ein Beispiel für (Blubb 4)

(Blubb 4): n ist nicht kleiner als 3, daher:

(Blubb 3) + (2* Blubb 2) + (3* Blubb 1)

3 ist nicht kleiner als 3, daher muss es weiter zerlegt werden.

(Blubb 2) + (2* Blubb 1) + (Blubb 0) = (Blubb 3)

(Blubb 4) ist also:

(Blubb 2) + (2* Blubb 1) + (Blubb 0) + (2* Blubb 2) + (3* Blubb 1)

Naja, und das ist 2 + 2 + 0 + 4 + 3.

Macht 11

Sollte so stimmen, ich hoffe es war verständlich.
Das ganze mit der lustigen Tracingfunktion vom Scheme:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
|(blubb 3)
| (blubb 2)
| 2
| (blubb 1)
| 1
| (blubb 0)
| 0
|4
|(blubb 2)
|2
|(blubb 1)
|1
11

Quoted

Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.

s-quadrat

Trainee

  • "s-quadrat" is male

Posts: 49

Date of registration: Oct 6th 2006

Location: Hameln

5

Monday, November 6th 2006, 1:47pm

für die rekursive kannst doch die funktionsvorschrift praktisch direkt so abtippen, wie sie da in der aufgabe steht... :D

bei mir funzt es zumindest (hatte nur erst die faktoren 2 und 3 übersehen, guck am besten nochmal genau hin ;) )

Posts: 101

Date of registration: Nov 8th 2005

Location: Hannover

6

Monday, November 6th 2006, 4:26pm

hallo

das problem habe ich auch.

ich bekomme auch einen anderen Ergebnis als in der Aufgabe.

Anmerkung vom Mod:
Bitte keine Lösungen posten (siehe Forenregeln).
Gilt in diesem Fall auch für Fast-Lösungen.



Es soll aber ein zahl von 4 stellen sein ich glaube es war 1895 oder 1859.

Kaos

Lesen, denken, flamen!

  • "Kaos" is male

Posts: 973

Date of registration: Oct 16th 2005

Location: Han. / Vahrenwald Sinnvolle Beiträge: 7

7

Monday, November 6th 2006, 4:37pm

Jaor, du hast da was falsch geklammert. Wenn du die Multiplikation extra klammerst, funktioniert dein Spaß.

Also so:

Source code

1
(* 2(f (- n 2))) (* 3(f ( - n 3)))


Das Ergebnis ist übrigens 1892 :)

Quoted

Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.

This post has been edited 1 times, last edit by "Kaos" (Nov 6th 2006, 4:39pm)


Posts: 101

Date of registration: Nov 8th 2005

Location: Hannover

8

Monday, November 6th 2006, 4:55pm

aha 8o

danke :]

und wie lautet es iterativ?

hab was geschrieben, komme aber nicht weiter

Source code

1
2
3
4
5
6
7
8
9
10
11
(define (f n)
 (f-iter a b c n ))

(define (f-iter a b c n)
  (cond 
    ((= n 1) a)
    ((= n 2) b)
    ((= n 3) c)
    (else (f-iter b c ((+  (f (- n 1))
                           (* 2(f (- n 2)))
                           (* 3(f ( - n 3)))) (- n 1))))))

This post has been edited 1 times, last edit by "flower-power" (Nov 6th 2006, 5:10pm)


Kaos

Lesen, denken, flamen!

  • "Kaos" is male

Posts: 973

Date of registration: Oct 16th 2005

Location: Han. / Vahrenwald Sinnvolle Beiträge: 7

9

Monday, November 6th 2006, 6:29pm

Oehm ok, der erste Teil sieht nicht schlecht aus, aber du übergibst keinerlei Start werte an deine Iterative Funktion weiter.

Source code

1
2
(define (f n)
 (f-iter a b c n ))


n ist klar, das ist der Wert zu dem du die Zahl bestimmen willst, a, b und c sind allerdings nicht definiert, was er dir auch als Fehler ankreiden sollte.

Guck dir mal an was das Programm macht, ich würde dir folgendes empfehlen:

Source code

1
2
(define (blubb2 n)
  (blubb-iter 2 1 0 n))


Öhm, was die ganzen Abfragen von n bringen sollen versteh ich nicht ganz, liegt aber vielleicht auch an mir.
Aber wenn du schon was hast was als Zaehler genutzt werden kann solltest du das tun.

Meiner Meinung nach ist

Source code

1
(if (= zaehler 0)

ne relativ brauchbare Abbruchbedingung, wobei bei mir n = zaehler ist.

Das Ergebnis ist bei mir c.

Ich befürchte, wenn ich mehr schreibe poste ich die komplette Lösung, aber ich hoffe dir so geholfen zu haben. Zu deinem Code fällt mir leider nichts ein, keine Ahnung worauf du da hinaus willst.

Quoted

Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.

ctk

Trainee

  • "ctk" is male

Posts: 113

Date of registration: Oct 15th 2004

10

Monday, November 6th 2006, 6:42pm

Es ist vieleicht hilfreich sich die iterative Fibonacci-Funktion aus der Vorlesung/Übung anzusehen.
http://www-psue.informatik.uni-hannover.…-uebung-fib.scm
Technik ist der Wettlauf der Intelligenz mit der Kreativität der Narren.
Bis heute haben die Narren immer gewonnen.

This post has been edited 1 times, last edit by "ctk" (Nov 6th 2006, 6:43pm)


Posts: 101

Date of registration: Nov 8th 2005

Location: Hannover

11

Monday, November 6th 2006, 6:50pm

danke jetzt habe ich es

Kojack

Trainee

  • "Kojack" started this thread

Posts: 97

Date of registration: Oct 10th 2006

12

Monday, November 6th 2006, 7:47pm

Okay also es war nun doch wesentlich einfacher als ich dachte.
Hatte nicht gedacht, dass die Lösung schon in der Aufgabenstellung steht. Sprich, einfach zu viel nachgedacht, wo es nix zu denken gab.

Nochmal zu der Iterativen lösung, im Endeffekt ist die Iterative Prozedur nun doch auch eine Rekursive, denn aufrufen muss sich die Prozedur ja doch selbst, sonst kommt man ja nicht zum Ergebnis, der Trick ist einfach einen Counter und eine Ergebnisvariable einzuführen, damit sich der Rechner nur diese zwei Variabelen merken muss, anstatt erst am Schluss die Schleifen auflösen zu können, richtig?
Niveau sieht von unten oft aus wie Arroganz

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

13

Monday, November 6th 2006, 8:00pm

Quoted

Original von Kojack
Nochmal zu der Iterativen lösung, im Endeffekt ist die Iterative Prozedur nun doch auch eine Rekursive, denn aufrufen muss sich die Prozedur ja doch selbst, sonst kommt man ja nicht zum Ergebnis [...]


Genau das wollte ich auch gerade schreiben, du warst nur ein wenig schneller. Bzw. ich wollte es etwas anders schreiben, und zwar wollte ich nur kurz den Hinweis geben, dass die oben angegebene "Lösung" immer noch einen rekursiven Prozess beschreibt!
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

ctk

Trainee

  • "ctk" is male

Posts: 113

Date of registration: Oct 15th 2004

14

Monday, November 6th 2006, 11:20pm

In diesem Zusammenhang vl interessant: http://de.wikipedia.org/wiki/Endrekursion
Technik ist der Wettlauf der Intelligenz mit der Kreativität der Narren.
Bis heute haben die Narren immer gewonnen.