Manchmal verwende ich in Interviews die Rekursion, um ein Problem zu lösen (z. B. das Hinzufügen 1
zu einer Ganzzahl mit unendlicher Genauigkeit), oder wenn sich das Problem als geeignet für die Verwendung der Rekursion herausstellt. Manchmal kann es nur daran liegen, dass Rekursion häufig zur Problemlösung verwendet wird. Ohne viel nachzudenken, wird Rekursion verwendet, um das Problem zu lösen.
Was sind jedoch die Überlegungen, bevor Sie entscheiden können, ob die Rekursion zur Lösung eines Problems geeignet ist?
Einige Gedanken, die ich hatte:
Wenn wir die Rekursion für Daten verwenden, die jedes Mal halbiert werden, scheint es kein Problem zu sein, die Rekursion zu verwenden, da alle Daten, die in 16 GB RAM oder sogar eine 8-TB-Festplatte passen, durch eine Rekursion mit einer Tiefe von nur 42 Ebenen verarbeitet werden können. (also kein Stapelüberlauf (Ich denke, in einigen Umgebungen kann der Stapel 4000 Ebenen tief sein, weit mehr als 42, aber gleichzeitig hängt es auch davon ab, wie viele lokale Variablen Sie haben, da jeder Aufrufstapel mehr Speicher belegt Wenn es viele lokale Variablen gibt und es die Speichergröße und nicht die Ebene ist, die den Stapelüberlauf bestimmt)).
Wenn Sie Fibonacci-Zahlen mit reiner Rekursion berechnen, müssen Sie sich wirklich um die zeitliche Komplexität kümmern, es sei denn, Sie zwischenspeichern die Zwischenergebnisse.
Und wie wäre es 1
mit einer Ganzzahl mit unendlicher Genauigkeit? Vielleicht ist es fraglich, ob Sie mit Zahlen arbeiten, die 3000 oder 4000 Stellen lang sind und so groß, dass es zu einem Stapelüberlauf kommen kann. Ich habe nicht daran gedacht, aber vielleicht lautet die Antwort nein, wir sollten keine Rekursion verwenden, sondern nur eine einfache Schleife, denn was ist, wenn in einer Anwendung die Zahl wirklich 4000 Stellen lang sein muss, um nach einigen zu suchen? Eigenschaften der Zahl, z. B. ob die Zahl eine Primzahl ist oder nicht.
Die letzte Frage lautet: Was sind die Überlegungen, bevor Sie sich für die Rekursion zur Lösung eines Problems entscheiden können?
1
einer Ganzzahl mit unendlicher Genauigkeit? Sie können sagen, ja, sie reduzieren sich auf ein kleineres Problem, aber reine Rekursion ist nicht dafür geeignet