擅长:python、mysql、java
<p>我不知道你为什么先生成因子,然后递归地检查。没必要那样。<br/></p>
<p>使用递归时,尽量不要在递归函数中定义变量,然后返回它。正如您所提到的,它每次都会被重置,因此只保留最后一个值。在</p>
<p>但下面是如何在代码中保留值:</p>
<pre><code>def numb_fact(number):
factor_list = []
for d in range(2, number+1, 1):
if number % d == 0:
factor_list.append(d)
else:
pass
return factor_list
def factorize(number):
allfact_list = numb_fact(number)
if len(allfact_list) > 0:
d = allfact_list[0]
if number % d == 0:
divided_numb = int(number / d)
return [d] + factorize(divided_numb)
else:
return []
print(factorize(12))
</code></pre>
<p>这是我提出的另一个简短/更好的递归解决方案。在</p>
^{pr2}$
<blockquote>
<p>Output : [2, 2, 3]</p>
</blockquote>