您好,我对 python 很陌生,想知道您是否可以帮我做点什么。
我一直在玩这个代码,似乎无法让它工作。
import math
def main():
if isPrime(2,7):
print("Yes")
else:
print("No")
def isPrime(i,n):
if ((n % i == 0) and (i <= math.sqrt(n))):
return False
if (i >= math.sqrt(n)):
print ("is Prime: ",n)
return True
else:
isPrime(i+1,n)
main()
现在 isPrime 方法的输出如下:
is Prime: 7
No
我确定该函数应该返回 true 然后它应该打印"is"。
我错过了什么吗?
最佳答案
您正在丢弃递归调用的返回值:
def isPrime(i,n):
if ((n % i == 0) and (i <= math.sqrt(n))):
return False
if (i >= math.sqrt(n)):
print ("is Prime: ",n)
return True
else:
# No return here
isPrime(i+1,n)
您还想传播递归调用的值,包括一个
return
语句:else:
return isPrime(i+1,n)
现在你的代码打印:
>>> isPrime(2,7)
is Prime: 7
True
关于返回语句的 Python 问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17173822/