Ich habe diese Funktion:Rekursion und Pre-Dekrementoperator
void m(int n)
{
if(n > 0)
m(--n);
cout << n << " "; //for n = 5 --> output is: 0 0 1 2 3 4
}
Ich habe ein Problem mit dem Verständnis, wie es funktioniert. Zum Beispiel:
n (Eingang) = 5
Ausgang:
Meine Frage ist: Warum es Null zweimal nicht zeigen?
Wenn ich Klammern wie folgt hinzu:
void m(int n)
{
if(n > 0)
{
m(--n);
cout << n << " "; // now, it shows 0 1 2 3 4 (n = 5)
}
}
Also, was Klammern in diesem Code führen, dass "0" nur einmal existiert?
Und wenn ich vordecrement (- n) zu nach-dekrement (n--) ändern zeigt es nichts. Warum?
Könnte mir jemand helfen zu verstehen, wie es funktioniert?
Es klingt wie Sie müssen lernen, wie Sie einen Debugger verwenden, um durch Ihren Code zu gehen. Mit einem guten Debugger können Sie Ihr Programm Zeile für Zeile ausführen und sehen, wo es von dem, was Sie erwarten, abweicht. Dies ist ein essentielles Werkzeug, wenn Sie programmieren wollen. Weiterführende Literatur: ** [Wie kleine Programme zu debuggen] (http: // ericlippert.com/2014/03/05/how-to-debug-small-programme /) ** – NathanOliver
Fix Einrückung des ersten Schnipsel zum besseren Verständnis. – Jarod42