यहाँ कोड है:

class Solution(object):
    
    def climbStairs(self, n):
        if n in {0,1}:
            return 1
        else:
            return climbStairs(n-2) + climbStairs(n-1)

पूर्ण त्रुटि संदेश:

NameError: global name 'climbStairs' is not defined
    return climbStairs(n-2) + climbStairs(n-1)
Line 7 in climbStairs (Solution.py)
    ret = Solution().climbStairs(param_1)
Line 29 in _driver (Solution.py)
    _driver()
Line 39 in <module> (Solution.py)

मैं सोच रहा हूं कि इसका दायरा से कुछ लेना-देना है। स्पाइडर में भी यही कोशिश की और वही परिणाम। मैं इस उदाहरण में किसी विधि के भीतर किसी विधि को पुनरावर्ती रूप से कॉल क्यों नहीं कर सकता?

इस कोड को भी आजमाया, और यह काम करता है, लेकिन केवल तभी जब मैं 'स्वयं' और 'ऑब्जेक्ट' कीवर्ड हटा देता हूं और कक्षा परिभाषा को हटा देता हूं, वह क्यों है?

पहले (त्रुटि: लेखन त्रुटि: चढ़ाई सीढ़ियों () 1 आवश्यक स्थितीय तर्क लापता: 'एन')

def climbStairs(self, n):
    if n in {0,1}:
        return 1
    else:
        return climbStairs(n-2) + climbStairs(n-1)
    
print(climbStairs(object, 8))

के बाद (वर्क्स! बिना क्लास डीफ़, 'सेल्फ' और 'ऑब्जेक्ट' कीवर्ड्स):

def climbStairs(n):
    if n in {0,1}:
        return 1
    else:
        return climbStairs(n-2) + climbStairs(n-1)
    
print(climbStairs(8))

क्लास डीफ़, कीवर्ड 'सेल्फ' और 'ऑब्जेक्ट' कोड में क्या जोड़ता है? मुझे उनकी आवश्यकता क्यों है?

-1
KrazyKoder67 20 सितंबर 2021, 21:41

2 जवाब

सबसे बढ़िया उत्तर

आप काम कर रहे कोड को निम्नलिखित पसंद करना चाहिए

कोड:

class Solution(object):
    
    def climbStairs(self, n):
        if n in {0,1}:
            return 1
        else:
            return self.climbStairs(n-2) + self.climbStairs(n-1)

print(Solution().climbStairs(8))

आउटपुट:

34

समस्या पुनरावर्ती फ़ंक्शन कॉल के साथ है। किसी वर्ग के फ़ंक्शन को कॉल करने के लिए आपको self जोड़ना होगा।

0
Sabil 20 सितंबर 2021, 21:47

अपनी विधि को self के साथ कॉल करने का प्रयास करें:

return self.climbStairs(n-2) + self.climbStairs(n-1)
0
Riccardo Bucco 20 सितंबर 2021, 21:44