我用Python编写了以下代码来获取数字的主要因素。使用break可以给出正确的输出,但不能不使用break语句。我不明白为什么不使用break时输出会像原来一样]
prime_list = []
def get_prime_factors(num):
for i in range(2,num+1):
if num%i == 0:
prime_list.append(i)
num = num // i
get_prime_factors(num)
**break**
else:
print(prime_list)
get_prime_factors(21)
#Output with break:
[3, 7]
#Output without break:
[3, 7]
[3, 7]
[3, 7, 7]
[3, 7, 7]
大多数情况似乎是由于您的代码中存在递归而引起的。那是预期的行为吗?
for i in range(2,num+1):
if num%i == 0:
prime_list.append(i)
num = num // i
get_prime_factors(num) #Here you are recursively calling the function again
break
如果您按如下方式修改代码,则所有操作均应正常进行:
prime_list = []
def get_prime_factors(num):
for i in range(2,num+1):
if num%i == 0:
prime_list.append(i)
print(prime_list)
get_prime_factors(21)
编辑:尽管您为什么不碰到RecursionError
很有趣。它会立即将您指向正确的方向。