当我运行下面的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)
我无法弄清楚为什么.我怀疑这是范围的一些问题,但我只是不明白:-(任何帮助将不胜感激.
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |