एक भूलभुलैया समस्या के लिए रिकर्सन का उपयोग करने की कोशिश कर रहा है और एक सशर्त परीक्षण केस बनाया है। क्या कोई मुझे समझा सकता है कि दूसरी शर्त 10 के बजाय 20 बीएस क्यों जोड़ती है?
def recur_test(count, list1, status):
if count == 10 and status == 1:
return (count, list1)
if count == 10 and status == 0:
count = 0
status = 1
recur_test(count, list1, status)
if count < 10 and status == 0:
count += 1
list1.append("a")
print("A thread", count)
recur_test(count, list1, status)
if count < 10 and status == 1:
count += 1
list1.append('b')
print("B Thread", count)
recur_test(count, list1, status)
print(recur_test(0, [], 0))
1 उत्तर
आपका यदि कथन सत्य होने पर भी अप्रत्याशित रूप से एक-दूसरे को प्रभावित करता है। जब दूसरी शर्त if count == 10 and status == 0:
सत्य है, तो आप गिनती = 0 और स्थिति = 1 सेट करते हैं, फिर पुनरावर्ती कॉल करें। पुनरावर्ती कॉल "बी थ्रेड" के माध्यम से सभी तरह से जाती है और उस स्थान पर नियंत्रण लौटाती है जहां आपने उस सेकंड में रिकर्सिव कॉल किया था यदि शरीर। तो अब गिनती और स्थिति क्रमशः 0 और 1 है। यह अंतिम शर्त if count < 10 and status == 1:
को सही बनाता है, इसलिए यह फिर से "बी थ्रेड" के माध्यम से सभी तरह से जाना जारी रखता है।
मैं सुझाव दूंगा कि अगर कथन को और में बदल दिया जाए।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।