我试图制作一个函数,使用递归来计算给定数字的因数。尽管看起来可行,但多次调用时的行为却很奇怪。
我第一次运行它,就可以了。
In [6]: factorize(24)
Out[6]: [2, 2, 2, 3]
第二次,它将先前的输出附加到返回值上。
In [7]: factorize(25)
Out[7]: [2, 2, 2, 3, 5, 5]
我不知道这是怎么回事。这是功能:
def factorize(n, curr_facts=[], factor=2):
if n == 1:
return curr_facts
condition = n % factor != 0
if condition:
return factorize(n, curr_facts, factor+1)
else:
n = int(n/factor)
curr_facts.append(factor)
return factorize(n, curr_facts, 2)
为避免此问题,我使用
In [8]: factorize(25, [])
Out[8]: [5, 5]
我没有看到它应该如何“记住”先前的输出。我在Spyder控制台和Python 3.7上。