每次递归调用都会重置变量,因此函数不起作用。 (Python)的

时间:2016-10-11 21:21:41

标签: 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:   
        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])

所以我正在编写一个将二进制数转换为十进制数的函数,但每次递归调用该函数时,变量计数器和存储都会被重置。我必须使用递归,并且不能使用我尚未学到的任何东西,例如地图或钥匙。

1 个答案:

答案 0 :(得分:0)

您希望通过函数调用保留的任何内容都不应该是函数的本地内容。有许多方法可以在调用之间保留值。您的建议方法是将其作为参数传递给函数。