每次递归调用都会重置变量,因此函数不会';不行。(Python)

每次递归调用都会重置变量,因此函数不会';不行。(Python),python,Python,代码: 每次重复调用函数时,计数器和存储器都会重置 def bin_to_dec(b): '''Takes a string b that represents a binary number and uses recursion to convert the number from binary to decimal.''' counter = -1 storage = 0 if b == 0: ret

代码:

每次重复调用函数时,计数器和存储器都会重置
def bin_to_dec(b):    
    '''Takes a string b that represents a binary number and uses recursion
       to convert the number from binary to decimal.'''
    counter = -1    
    storage = 0    
    if b == 0:   
        return '0'
    elif b == 1:
        return '1'
    else:    
        if b[-1] == 1:
            counter += 1
            storage += 2**counter
            return storage + bin_to_dec(b[:-1])
        else:
            counter += 1
            return bin_to_dec(b[:-1])

因此,我正在编写一个函数,将二进制数转换为十进制数,但每次递归调用该函数时,变量计数器和存储都会重置。我必须使用递归,不能使用任何我还没有学过的东西,比如map或key。

任何你想通过函数调用保留的东西都不应该是函数的本地。有许多方法可以在调用之间保留值。在您的情况下,推荐的方法是将其作为参数传递给函数。

这应该告诉您需要知道的一切:
计数器和
存储
是函数的本地项-是什么让您相信它们会“结转”到下一个函数调用?提示:这不是唯一对代码不起作用的事情。。。