Ich habe eine rekursive Funktion, die ich beheben möchte. Ich möchte die Rekursionstiefe ausgeben ... d. Wie oft ruft sich die Funktion selbst auf.
Wenn ich eine statische Variable verwende, die am Anfang der Funktion inkrementiert und unten dekrementiert.
Gibt mir das genau die Tiefenstufe?
%Vor%Um es einfacher zu machen und
Wenn Sie Ihre Vorstellungskraft wirklich ausdehnen, könnte dies es dem Compiler erleichtern, einige rekursive Aufrufe zu inline zu bringen und / oder eine Tail-Call-Optimierung im Falle einer Tail-Rekursion durchzuführen. Ich habe keine Beweise, dass dies eine Rolle spielt , aber ich kann mir vorstellen, externe Symbole innerhalb eines Funktionskörpers zu referenzieren, die die Compiler-Optimierung beeinflussen.
Ich schlage vor:
%Vor%Nein, möglicherweise nicht, wenn eine Ausnahme ausgelöst wird. Eine bessere (und häufigere) Option ist:
%Vor%Im Allgemeinen möchten Sie eine Tiefenvariable, die außerhalb der rekursiven Funktion definiert ist, für die Zwecke der Threadsicherheit und das Drucken von außerhalb dieser Funktion inkrementieren.
Hier ist ein einfaches faktorielles Beispiel, das es demonstriert:
%Vor%Ausgabe:
%Vor%Tags und Links c++