我寫了下面的程序,以質比化一些:的Python遞歸程序素比化了許多
import math
def prime_factorize(x,li=[]):
until = int(math.sqrt(x))+1
for i in xrange(2,until):
if not x%i:
li.append(i)
break
else: #This else belongs to for
li.append(x)
print li #First print statement; This is what is returned
return li
prime_factorize(x/i,li)
if __name__=='__main__':
print prime_factorize(300) #Second print statement, WTF. why is this None
以下是輸出我得到:
[2, 2, 3, 5, 5]
None
本書雖然」,返回的值是正確打印,返回後的值似乎一直都不打印。我錯過了什麼?
而且,我怎麼能改善方案(繼續使用遞歸)
同樣的完全遞歸的方式,'在函數內部print'聲明,你看到的。'None'是函數的返回值。 – 2009-09-12 11:31:31
@ S.Lott,可以解釋一下。我正在返回正在打印的內容。爲什麼它會不同? – 2009-09-12 16:04:08
而在外面,我正在印刷,我回來了。 – 2009-09-12 16:04:39