【发布时间】:2020-02-16 07:49:48
【问题描述】:
我正在编写代码来检查一个数字是否是素数,但我希望参数既是列表又是整数。为此,我正在使用递归,但递归似乎不起作用。
def prime_checker(suspected_prime):
if type(suspected_prime) == type(list()):
result_list = list()
for x in range(len(suspected_prime)):
result_list.append(prime_checker(suspected_prime[x]))
return(result_list)
else:
prime_factor, factors, suspected_prime = 2, 0, abs(suspected_prime)
while factors < 1:
if suspected_prime % prime_factor == 0:
factors += 1
if math.ceil(suspected_prime**0.5) == prime_factor:
if factors == 0:
return True
else:
return False
prime_factor += 1
【问题讨论】:
-
您的代码有问题。在函数中传递一个列表后,它将使用 prime_checker(suspected_prime[x]) 重新运行,然后它将检查 type(suspected_prime) == type(list ()).由于 type(any_list[x] 是整数,它不会重新运行。
-
@ak47hil 你最好把它作为答案而不是评论发布,它太大而且不可读
-
@mangusta 我不确定这是代码的唯一问题,但乍一看似乎就是这样。这就是为什么我将其作为评论回答。我确定它不是完整的回答。
-
@ak47hil 当 if 条件重新运行并且这一次suspended_prime 是一个整数时,那么 else 条件不应该运行吗?我只面临这个问题。递归时,不会进入 else 条件
标签: python function recursion primes