无法理解中断的区别和影响

问题描述 投票:1回答:1

我用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]
python break
1个回答
0
投票

大多数情况似乎是由于您的代码中存在递归而引起的。那是预期的行为吗?

    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很有趣。它会立即将您指向正确的方向。

© www.soinside.com 2019 - 2024. All rights reserved.