Beenden Sie die Rekursion vollständig, wenn Sie etwas zurückgeben

8

Ich rekurriere, um einen langen Wert innerhalb einer Liste mit mehreren Kindern zu finden, die auch Kinder haben können.

folgende Methode:

%Vor%

Ist es möglich, wenn ich return td; (siehe kommentierte Zeile) mache, dass meine gesamte Rekursion aufhört?

Danke

    
Ozkan 21.12.2011, 11:53
quelle

2 Antworten

14

Ich vermute, du möchtest etwas wie:

%Vor%

Jedes return gibt nur eine Ebene zurück, aber indem wir den Rückgabewert in der else -Klausel überprüfen, können wir den ganzen Stapel nach oben zurückgeben, wenn wir den richtigen Wert gefunden haben.

Das Endergebnis, das an den Aufrufer zurückgegeben wird, ist eine Nullreferenz, wenn sie nicht gefunden wurde.

Beachten Sie, dass ich den "output" -Parameter entfernt habe, der sowieso nicht effektiv gewesen wäre, da es kein ref -Parameter war und nicht so klar wie nur ist der Rückgabewert.

    
Jon Skeet 21.12.2011, 11:56
quelle
1

Eine linq-Erweiterungslösung, die ich mir ausgedacht habe, wahrscheinlich langsamer, aber da gehts ..

%Vor%     
Richard Friend 21.12.2011 13:13
quelle

Tags und Links