में उपज रिटर्न तत्वों के आदेश के साथ रिकर्सन मेरे पास एक रिकर्सिव फ़ंक्शन है जो प्रारंभिक रूट नोड को देखते हुए सभी सबट्री नोड्स देता है।पेड़
private IEnumerable<Node> getAllNodesRecursively(Node subnode)
{
foreach (Node node in subnode.Nodes)
getAllNodesRecursively(node);
yield return subnode;
}
निम्नलिखित वृक्ष संरचना के लिए:
A
|
+--B
|
+--C
| |
| +--D
|
+--E
जब मैं इस तरह के रूप पुनरावृति करने की कोशिश:
foreach (Node n in getAllNodesRecursively(a))
{
Console.WriteLine(n);
}
फ़ंक्शन केवल मान।
मैं रिकर्सन के साथ उपज-वापसी का उपयोग करना चाहता हूं और इस उदाहरण में प्रीऑर्डर (ए, बी, सी, डी, ई) में तत्वों को पुनर्प्राप्त करना चाहता हूं।
(यदि मैं foreach से पहले उपज वापसी डालता हूं, तो foreach कभी नहीं होगा)।
क्या यह संभव है?
क्या आपने कोशिश की है कि यदि आप उपज रिटर्न सामने डालते हैं तो foreach नहीं कहा जाता है? मुझे लगता है कि इसे बुलाया जाएगा। – okrumnow
हां, आप सही थे। यील्ड रिटर्न शेष कोड को छोड़ नहीं देता है। ऐसा लगता है कि यह मूल्य वापसी की अनुमति देने के लिए सिर्फ एक वाक्य रचनात्मक चीनी है और अभी भी कार्य चल रहा है। मेरी गलती। –