【发布时间】:2017-11-25 03:46:26
【问题描述】:
我用python2编写了一个递归程序来获得数字的乘法持久性;这是你必须将一个数字中的数字相乘直到你达到一个数字的次数。我还想将所有连续的乘法存储在列表中。
import operator
def persistence(n, count = []):
n = list(str(n))
if len(n) == 1:
return len(count)
else:
n = list(map(int, n))
n = reduce(operator.mul, n)
count.append(n)
return persistence(n)
该代码适用于进行的第一个函数调用,但不是将计数列表重置为空列表,而是保留先前获得的任何值的值。
对于第一个函数调用:
persistence(39)
输出为 3。这是预期的输出。 但是,当进行另一个函数调用时:
persistence(4)
它不是输出 0,而是输出 3;这是第一次函数调用的结果。
我认为问题在于全局列表。我尝试在函数内声明列表,但它只是在每次递归调用时将列表重置为空。有人可以帮忙吗?
【问题讨论】:
-
搜索“Mutable default arguments Gotcha”
-
作为旁注,除了它的长度之外,您不需要任何数不清的东西。为什么不将其类型更改为 int?
-
@bipll 对此感到抱歉。我已经编辑了帖子以表明我想存储每个连续的乘法。
标签: python recursion global-variables