我试图将一个数字拆分为 2 的幂,但我的函数会记住我之前调用的结果。
from math import log
#split number in powers of 2
#n : number
#lst : the current list of numbers
def spn(n, lst=list()):
if n==1:
lst.append(n)
return lst
else:
#rdy : the ready-to-add number
rdy=2**((log(n+1,2))-1)
lst.append(rdy)
#n-rdy: the new number to evaluate
return spn(n-rdy, lst)
例如:
spn(1) 应该返回 [ 1 ]
spn(3) 应该返回 [2.0, 1.0]
spn(7) 应该返回 [4.0, 2.0, 1.0]
但仅在我第一次调用该函数时才有效,然后在第一次调用后我之前的结果显示为参数。
我该如何解决?