Python-递归函数-意外行为

时间:2019-03-09 14:59:26

标签: python recursion factorization

如今,

我试图制作一个函数,使用递归来计算给定数字的因数。尽管看起来可行,但多次调用时的行为却很奇怪。

我第一次运行它,就可以了。

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上。

0 个答案:

没有答案