您好,我对 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/

10-11 07:00