Java Tutorial 28 - Rekursion

preview_player
Показать описание
Danke an MrJavaProgramming

Рекомендации по теме
Комментарии
Автор

ACH JA KLAR!!! Das ist ja völlig trivial. Vielen Dank

HeavenEdit
Автор

Wow, das ging schnell!^^ Vielen Dank für die ausführliche Antwort! Das hat mir echt weitergeholfen. Großartige Arbeit im übrigen.

BioPain
Автор

@ZombieTalky Was genau meinst du mit fertige Datei? Eine ausführbare Datei? Wenn dem so ist macht das noch nicht viel Sinn bevor ich euch die GUIs erklärt habe. Denn: die jetztigen Programme werden leider nur auf der Java Console ausgeführt, diese wird aber standartgemäß nichtmal angezeigt.

MFG

Brotcrunsher
Автор

Könntest du mir bitte nochmal erklären warum es mit (x-1)*x funktioniert? Diese Schreibweise hast du nämlich noch in keinem Tutorial erklärt

Natalie-wcgc
Автор

Kann es sein, dass du bei 3:58

"Fakultät 4-1 mal die 4" meintest, und nicht

"Fakultät 4 -3 mal die 4"?

mikefire
Автор

5:00, sollte das nicht heißen "Wert von Fakultät 3"?

KingDav
Автор

Return 1 ist einfach, weil die Fakultät von 1 nunmal 1 ist. Herleitung: 3! = 3*2*1, 2!=2*1 und logisch dann 1!=1. Ausrufezeichen = Fakultät.
Sollte das ganze nicht 1 sein, so ist die Fakultät von x das gleiche wie x*((x-1)!). Ich glaube dein hauptproblem bei dem ganzen ist noch, dass du dir verinnerlichen musst, dass die methode mehrfach zur gleichen zeit aufgerufen ist, allerdings mit anderen Werten.

Brotcrunsher
Автор

Dieses Beispiel könnte man ohne Probleme auch mit einer Schleife umsetzen, richtig. Aber es gibt deutlich komplexere Algorithmen, die deutlich verschachtelter funktionieren, z.B. wenn man eine Baumstruktur untersuchen muss. Dabei hilft die Rekursion einiges, sehr viel leichter zu machen als mit einer Schleife.

Brotcrunsher
Автор

@ZombieTalky Sowas habe ich tatsächlich geplant. Sobald alle Basics (Grundlagen, Objecktorientierung und GUI) abgeschlossen sind frag ich meine Abos in welche Richtung ich weiter Tutorials machen soll: Java Games, Android, vielleicht sogar Minecraft Plugins.
Oder vielleicht ne neue Programmiersprache? PHP würde sich anbieten.

MFG

Brotcrunsher
Автор

"Kannsch du mir sagen" xD Ihr Schwaben seid einfach toll! Danke für deine Videos und viele Grüße aus Karlsruhe ...

ThePasiTV
Автор

Hab ich das richtig verstanden das er das *x erstmal ignoriert und erst das den Fakultät Aufruf abarbeitet und wenn 1 erreicht wird einfach rück abwickelt?
Beim Rück abwickeln also folgendes Rechnet:
(1. 1*1=1)
2. 1*2=2
3. 2*3=6
4. 6*4=24
5. 24*5=128

Dante
Автор

Was mich ehrlich gesagt noch verwirrt ist folgendes... Mir ist bewusst wofür das return 1 gut ist, es dient ja als Abbruchbedingung, sprich wenn eine 1 übergeben wird, oder auf 1 runter gezählt wurde. Und ich versteh auch, dass die Methode sich selbst immer und immer wieder aufruft, allerdings wundere ich mich, warum das funktioniert. Irgendwann ist x doch zwangsweise 1, wieso übergibt er diese 1 dann nicht an die Mainfunktion?

BioPain
Автор

@oODjleonOo Zu Game Design werde ich ebenfalls in meiner Game Development Serie kommen (sogar recht früh).
MfG

Brotcrunsher
Автор

Hey Brotcrunsher,

ich verstehe es auch noch nicht ganz, wie die Methode mehrfach zur gleichen Zeit aufgerufen wird.
Denn wie Spartama22 sagt, wenn ich z.B. y = 5 setze wie du es getan hast,
dann übergebe ich den Wert in die Methode.

Dann wird abgeglichen, ob 5 == 1 ist, wenn nicht dann
return fakultaet (5-1)*5 = 20...

Bedanke mich schon im Voraus :)

TheUrbanLife
Автор

Ich glaube mein Kommentar wurde falsch verstanden, ich wollte ledeglich sagen dass der vorgang dieser rekursion ähnlich wie eine for-schleife funktioniert. Die nützlichkeit einer solchen rekursion verglichen mit einer for schleife wollte ich gar nicht in frage stellen.
Die Frage die ich mir noch stelle, warum wird der ausdruck return fakultät(x-1)*x; nicht komplett ausgerechnet, wenn man drei eingibt, return fakultät(3-1)*3; warum wird das ergebnis nicht gespeichert?

Primus
Автор

Aber wenn er dann anfängt sich selbst immer wieder zu returnen(also wenn x=1 ist) wird ja als erstes 1 an die methode fakultaet returned... also ist x=1. Jetzt verstehe ich nicht was mit diesem x gemacht wird?

JiG.official
Автор

@oODjleonOo Sowas hab ich mir auch schonmal überlegt. Allerdings muss da schon ein größeres Basic verständnis vorhanden sein. Zum Gamedevelopment komme ich noch ;)

Brotcrunsher
Автор

Jetzt ist der Punkt wo man sich fragt.... will ich wirklich programmieren lernen? Aber VERDAMMT NOCHMAL JA! Nur das Beispiel habe ich nicht kapiert.

Rocker
Автор

ich starre jetzt schon eine gefühlte stunde auf den Quellcode und hab ihn auch schon übernommen und alles und lasse dein Video hier in der Dauerschleife laufen (alles übertrieben ;))
aber ich komme nicht dahinter, wie das funktionieren soll. Das 2. return ...was und wohin übergibt es da etwas? und warum (x-1)*x ? Wenn ich mit 5 da reingehe, dann wäre das doch (5-1)*5, was bei mir 20 wäre, oder hab ich da ein Denkfehler? Das return 1 ist mir ebenso ein Rätsel. Danke schonmal für jegliche Hilfe :)

Spartama
Автор

Ist eine Schleife auch eine Rekursion?

middeldesign