【发布时间】:2016-09-02 21:24:59
【问题描述】:
我必须使用递归找出 number(N) 是否是素数,不允许循环。我尝试将使用 for 循环的常用代码转换为递归代码,但它的行为不一样。此功能包含在另一个功能中,该功能是另一个功能的一部分。只有参数 a 和 N 应该被使用和传递 这是我的功能。
a=2
def is_prime(a,N):
prime = True
if N <=1:
return
else:
if a >= N:
return
else:
if N == 2:
prime = True
print(N)
return
elif (N % a) == 0:
prime = False
return is_prime(a+1,N)
else:
prime = True
print(N)
return
我相信这个错误就在这里。
elif (N % a) == 0:
prime = False
return is_prime(a+1,N)
else:
prime = True
print(N)
这是我尝试转换的代码。
if num > 1:
for i in range(2,num):
if (num % i) == 0:
print(num,"is not a prime number")
print(i,"times",num//i,"is",num)
break
else:
print(num,"is a prime number")
else:
print(num,"is not a prime number")
【问题讨论】:
-
函数应该返回什么吗?
-
@hd1,我不同意重复通话。这特别要求使用没有任何循环的递归解决方案。该解决方案显然使用了循环。
-
不,如果它是素数,它只是为了打印(N)。这个函数是另一个函数的一部分。 @niemmi
标签: python python-3.x recursion primes