4

您好,我对 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,然后它应该打印“是”。我错过了什么吗?

4

1 回答 1

10

您正在丢弃递归调用的返回值:

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
于 2013-06-18T16:09:56.990 回答