python - Funny behaviour of my recursive function -


  t = 8 स्ट्रिंग = "1 2 3 4 3 3 2 1" string.replace ("", " ") स्ट्रिंग 2 = [स्ट्रिंग में एक्स के लिए एक्स] प्रिंट स्ट्रिंग 2 श्रेणी में एन (टी -1): string2.remove ('') प्रिंट स्ट्रिंग 2 def रिमूवर (सीए): newca = [] प्रिंट लेन (सीए) अगर लैन ( Ca) == 1: वापस जाने के लिए: मैं के लिए ca में: newca.append (int (i) - int (min (ca)) x के लिए newca में: if x == 0: newca.remove (0) प्रिंट न्यूका रिटर्न रिमूवर (न्यूका) प्रिंट (रिमूवर (स्ट्रिंग 2))  

यह एक ऐसा प्रोग्राम माना जाता है जो संख्याओं की सूची में लेता है, और उस सूची में प्रत्येक नंबर के लिए इसे से घटा देता है, मिनट (सूची) यह पहले कुछ पुनरावृत्तियों के लिए ठीक काम करता है लेकिन अंत की ओर नहीं। मैंने मदद के लिए यहां और वहां प्रिंट स्टेटमेंट जोड़ दिए हैं।

संपादित करें:

  t = 8 स्ट्रिंग = "1 2 3 4 3 3 2 1 "string = string.replace (" "," ") स्ट्रिंग 2 = [स्ट्रिंग में एक्स के लिए x] प्रिंट लेन (स्ट्रिंग 2) डीईएफ़ रिमूवर (सीए): न्यूका = [] अगर लैन (सीए) == 1: रिटर्न () अन्य: के लिए मैं ca में: newca.append (int (i) - int (min (ca)) जबकि 0 newca में: newca.remove (0) प्रिंट लेनन (newca) वापसी रिमूवर (newca) प्रिंट (remover (स्ट्रिंग 2))  

  एक्स के लिए newca में: if x == 0 : Newca.remove (0)  

एक सूची पर फेरबदल और एक ही समय में इसके से चीजें हटाने से अजीब और अप्रत्याशित व्यवहार हो सकता है

  जबकि 0 में newca: newca.remove (0)  

या सूची की समझ के बजाय एक का उपयोग करने की कोशिश करें। :

  newca = [आइटम के लिए आइटम में newca अगर आइटम! = 0]  

या एक और अस्थायी सूची बनाएं:

  newnewca = [] newca में एक्स के लिए: अगर एक्स! = 0: newnewca.append (x) प्रिंट newnewca वापसी रिमूवर (newnewca)  

Comments

Popular posts from this blog

HTML/CSS - Automatically set height width from background image? -

php - Mysql Show Process - Sleep Commands and what to do -

c - What is the address of buf (the local variable in the main function)? -