小编Ste*_*ing的帖子

重复调用时,python函数返回不同的结果

当我运行下面的python代码时,

def main():
    #print prime_factors(10)
    print prime_factors(9)

def prime_factors(n, i=2, factors=[]):
    if n==1:
        return factors
    if(n%i==0):
        factors.append(i)
        n = n/i
        return prime_factors(n, i, factors)
    else:
        return prime_factors(n, i+1, factors)

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

它返回预期结果,返回9的素数因子:

[3, 3]
Run Code Online (Sandbox Code Playgroud)

如果我从第2行"print prime_factors(10)"中删除注释,就会发生一些奇怪的事情.对于10,一切都很好,但对于9,它不仅包含9的素数因子,而且包含10的素数因子:

[2, 5]
[2, 5, 3, 3]
Run Code Online (Sandbox Code Playgroud)

如果我用两个可选参数调用该函数

def main():
    print prime_factors(10, i=2, factors[])
    print prime_factors(9, i=2, factors[])
Run Code Online (Sandbox Code Playgroud)

一切正常.

[2,5]
[3,3]
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么.我怀疑这是范围的一些问题,但我只是不明白:-(任何帮助将不胜感激.

python

3
推荐指数
1
解决办法
165
查看次数

标签 统计

python ×1