0
我在調試此代碼片段時遇到問題。不要緊,它實際上並沒有回報作者想要的東西,我已經解釋說,我的問題是不同的。迭代器意外增加自己?
def factors(n):
result = []
for x in xrange(2,n):
print "\t%i,foo" % x
if n % x == 0:
isPrime = True
print "\t\t%i,bar" % x
for factor in result:
print "\t\t%i %% %i = %i" % (x,factor,x % factor)
if x % factor == 0:
isPrime = False
print "\t\t\t%i,foobar" % x
subFactors = factors(x)
result.extend(subFactors)
if isPrime:
result.append(x)
print ""
return result
def main():
factor = dict()
for i in xrange(1,100):
factor[i] = factors(i)
factor[i].insert(0,1)
factor[i].append(i)
print "%i: %s" % (i,factor[i])
if __name__ == "__main__":
main()
該代碼是無限循環!具體來說,重複輸出以下內容:
2,foo
2,bar
3,foo
4 % 2 = 0
4,foobar
注意,在第二次迭代它不打印「欄中的」打印語句,以及x
變化從「欄中的」 print語句「國防部」的價值打印聲明。
我無法向作者解釋此行爲。你們中的一個人能夠善待人嗎?
這是否也可以解釋爲什麼「酒吧」級別的打印語句不會第二次出現? – rsegal
也許。由於遞歸,「foo」位被重複,而由於擴展列表,「foo」位被重複。我懷疑修正是完全忽略非主要因素,因爲您將始終在外循環的上一個循環中添加其所有子因子。 – Blckknght