当我运行下面的Python代码时,
如果我从第2行的注释中删除"print prime_factors(10)",会发生奇怪的事情。 对于10来说一切都好,但是对于9来说,它不仅包含了9的质因数,还包括10的质因数:
如果我使用两个可选参数调用该函数。
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]
我无法弄清楚原因。我怀疑这是某个作用域的问题,但我就是不理解 :-( 任何帮助将不胜感激。