当我运行下面的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()
它返回预期的结果,它返回 9 的质因数:
[3, 3]
如果我从第 2 行“print prime_factors(10)”中删除注释,就会发生一些奇怪的事情。对于 10,一切都很好,但对于 9,它不仅包含 9 的质因数,还包含 10 的质因数:
[2, 5]
[2, 5, 3, 3]
如果我用两个可选参数调用函数
def main():
print prime_factors(10, i=2, factors[])
print prime_factors(9, i=2, factors[])
一切正常。
[2,5]
[3,3]
我不知道为什么。我怀疑这是范围的一些问题,但我就是不明白:-( 任何帮助将不胜感激。