擅长:python、mysql、java
<p>我知道我没有直接回答你的问题。但出于您的目的,您根本不需要使用递归。简单的迭代就足够了。在</p>
<pre><code>class PrimeGenerator:
def __init__(self):
self.current=2 # 1 is not prime number
def __iter__(self):
while True:
for n in range(2,int(self.current**0.5)+1):
if self.current%n==0: # checking if it's not prime
break
else:
yield self.current
self.current+=1
def reset(self):
self.current=1 # because the generator increases by one after it hits yield
def factorize(n):
generator=PrimeGenerator()
result=[]
for prime in generator:
if n%prime==0:
result.append(prime)
n//=prime
generator.reset()
if n==1:
break
return result
print(factorize(12))
</code></pre>
<p>我知道有更好的算法来检查质数,但是除非你处理的是非常大的数,否则这个实现已经足够快了。在</p>