मान लीजिए कि मेरे पास कुछ समस्या के लिए एक पुनरावर्ती और एक पुनरावृत्ति समाधान (एक स्टैक का उपयोग करके) है। एक बाइनरी पेड़ के preorder traversal। मौजूदा कंप्यूटरों के साथ, मेमोरी-वार, क्या पुनरावर्तक समाधान पर पुनरावर्ती समाधान का उपयोग करने के लिए कोई फायदा है या इसके विपरीत बहुत बड़े पेड़ों के लिए इसके विपरीत है?स्मृति उपयोग के संबंध में पुनरावृत्ति बनाम पुनरावृत्ति
मुझे पता है कि कुछ रिकर्सिव समाधानों के लिए जहां उप-समस्याएं दोहराती हैं, रिकर्सन का उपयोग होने पर अतिरिक्त समय और मेमोरी लागत होती है। मान लें कि यह मामला यहां नहीं है। उदाहरण के लिए,
preOrder(Node n){
if (n == null) return;
print(n);
preOrder(n.left);
preOrder(n.right);
}
बनाम
preOrder(Node n){
stack s;
s.push(n);
while(!s.empty()){
Node node = s.pop();
print(node);
s.push(node.right);
s.push(node.left);
}
}
क्या 'विज़िट' 'preOrder' होना चाहिए? –
इसे नोट करने के लिए धन्यवाद। –
एक विचार यह हो सकता है कि रिकर्सन का उपयोग करते समय स्मृति हमेशा ढेर पर होगी। जबकि पुनरावृत्ति के साथ आप इसे ढेर में आवंटित करने का निर्णय ले सकते हैं। –