Trend-Themen
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Warum solltest du Rekursion lernen, auch wenn du sie nie verwenden wirst?
Rekursive Lösungen trainieren dich in einigen Denkweisen:
1. Anstatt zu versuchen, die Lösung zu generieren, beginnst du oft mit „Was ist die Struktur einer gültigen Lösung“ und arbeitest rückwärts. Bei einigen Problemen ist es viel einfacher, rückwärts zu arbeiten.
2. Wenn du das Problem löst, ist es leicht, dich von all den „Was wäre wenn“-Fragen ablenken zu lassen. Wenn du ein Problem rekursiv löst, bist du oft gezwungen, 90 % der Probleme „zu ignorieren“ und dich darauf zu konzentrieren, nur einen Teil richtig zu machen.
3. Was oft ein „Randfall“ in einer imperativen Lösung wäre, ist ein „Basisfall“ in einer rekursiven. Rekursives Denken zwingt dich manchmal dazu, die Randfälle nicht zu ignorieren. Darüber hinaus nutzen rekursive Lösungen stark das Muster-Matching, sodass du gezwungen bist, an alle Situationen zu denken, die du antreffen könntest.
Hier ist ein wirklich gutes Beispiel: Leetcode 335 Selbstkreuzung (schwieriges Problem).
Du reist auf einer spiralförmigen Trajektorie auf einem Gitter (d.h. du drehst immer nach links, nachdem du eine gewisse Strecke nach Norden, Süden, Osten oder Westen gereist bist). Die Frage ist: „Angesichts der Entfernung jedes ‚Segments‘ der Spirale in der Reihenfolge, hat die Spirale sich selbst gekreuzt oder nicht?“
Obwohl die Lösung dafür keine Funktion benötigt, die sich selbst aufruft, nutzt die „schöne“ Lösung rekursive Eigenschaften:
1. Wenn wir noch keine Kreuzung gefunden haben, können wir annehmen, dass es in der Vergangenheit keine Kreuzungen oder ungültigen Spiralen gibt. Wir stellen außerdem fest, dass es egal ist, ob wir nach links, rechts, oben oder unten reisen, da wir nur nach links abbiegen können. Alles, was uns interessiert, ist, ob die vorherigen Segmente parallel zu unserer vorherigen Wendung sind und wie weit sie entfernt sind.
2. Wenn wir nach links abbiegen, gibt es eine extrem begrenzte Anzahl von „Segmenten“ in der Spirale, in die wir crashen können, was „rekursiv“ wahr ist, egal wie groß die Spirale wird. Es gibt viele vergangene Daten über die Spirale, die wir ignorieren können.
3. Es gibt eine begrenzte Anzahl von Szenarien in deiner vorherigen Wendung, die deine Logik beeinflussen: a) Hast du weit genug gereist, um nicht in etwas zu crashen, b) wenn nicht, in was könntest du potenziell crashen? (auch begrenzt).
Das Nervige an den harten Leetcode-Problemen ist, dass sie plötzlich einfach werden, wenn du den entscheidenden Einblick findest. Aber diese entscheidenden Einblicke kommen dir natürlicher, wenn du dich im rekursiven Programmieren trainiert hast.
Es geht nicht nur darum, Funktionen zu entwerfen, die sich selbst aufrufen – es geht darum, dich dazu zu zwingen, das Problem so zu zerlegen, dass es mit einer Funktion gelöst werden kann, die sich selbst aufruft. Je mehr Möglichkeiten du hast, ein Problem zu zerlegen, desto wahrscheinlicher ist es, dass du eine „Aha“-Lösung findest.
Offensichtlich muss ich in meinem Beruf nicht leetcode, aber ich muss kreative Wege finden, um Probleme zu zerlegen, damit sie verständlich werden – und das Training in Rekursion hat mir dabei definitiv geholfen.

1,67K
Top
Ranking
Favoriten