2017-03-14 4 views
0

Ich bin nicht in der Lage Rekursion für das folgende Stück Code zu verfolgen:Wie entstehen mehrere rekursive Aufrufe innerhalb einer Schleife?

void func(int n) 
{ 
    if(n<=1) 
     return; 

    for(int i=0;i<n;i++) 
    { 
     func(n-1); 
     cout << n; 
     func(n-1); 
    } 
} 

Wie funktioniert die Rekursionsbaum aussehen und wie der Funktionsaufruf für den gegebenen Code gemacht werden, wenn wir func (3 aufrufe)?

+5

gut ausgeführt werden, es laufen und es direkt sehen ... :) – ewcz

+0

Ich tat, aber ich konnte den Code nicht manuell verfolgen! @ewcz –

+1

@KenilPatel Dafür ist Ihr Debugger gedacht! Jeder kann eine Taste antippen und einige rote Punkte über den Bildschirm fliegen sehen. – George

Antwort

1

Ich zog nur eine partielle Spur Baum, werden die Knoten als die roten Zahlen

The trace tree

Der Ausgang ist 223222232222322

+0

Wie kommt der cout << 3 Aufruf an f (2) und f (2) ?? Ich verstehe es nicht! –

+0

Das Diagramm zeigt die Reihenfolge der Ausführung von Anweisungen, es ist nicht die Funktion Aufrufknoten. – deepmax

Verwandte Themen