Rekursion

preview_player
Показать описание
Vorlesung für Informatik Bachelor
Рекомендации по теме
Комментарии
Автор

Danke, hilft mir sehr mich auf meinen Test vorzubereiten 👍
Ist auch sehr schülerfreundlich, gut erklärt :)

JJmusic
Автор

Wenn ich das dann richtig interpretiere, hätte die Rekursive Methode eine O-Notation von O(2^n) wenn n>0
Zur Rekursionstiefe habe ich ebenfalls eine Frage. Sie meinten, dass die Tiefe bestimmt wird, durch die Anzahl der Aufrufe+1. Der Stackoverflow würde ja deshalb kommen, weil der GC ja den Speicher nicht bereinigen kann, da da noch Referenzadressen offen sind.
Demnach ist ja das durchschleifen von Variablen zu x-Methoden Bad Practice und besser durch Objektrefernzierung zu ersetzen.

tomatentheo
Автор

Bei mir bricht der Code ohne StackOverflow ab, weil Scala keinen NumberUnderflow wirft, wenn man bei Int.MIN_VALUE angelangt ist. Läuft ca. 2s auf einem nicht ganz taufrischen Laptop.
<code>
scala> @tailrec
| def htn (n: Int) : Int = {
| if (n == 32) return n else return htn(n-1) }
htn: (n: Int)Int

scala> htn (30)
res7: Int = 32
</code>
Der Compiler kann bei endrekursiven Funktionen diese optimieren und einen Stackoverflow vermeiden. Das Schlüsselwort @tailrec weist den Compiler an, eine Fehlermeldung auszugeben, sollte es nicht endrekursiv sein.

unbekannter_Nutzer