Python问题与return语句

War*_*rus 3 python return

您好我是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()
Run Code Online (Sandbox Code Playgroud)

现在isPrime方法的输出如下:

is Prime:  7
No
Run Code Online (Sandbox Code Playgroud)

我确定该函数应该返回true然后它应该打印"Yes".我错过了什么吗?

Mar*_*ers 9

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

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)
Run Code Online (Sandbox Code Playgroud)

您也希望传播递归调用的值,包括一个return语句:

else:
    return isPrime(i+1,n)
Run Code Online (Sandbox Code Playgroud)

现在您的代码打印:

>>> isPrime(2,7)
is Prime:  7
True
Run Code Online (Sandbox Code Playgroud)

  • @JoranBeasley:我实际上是先测试*代码.:-P (2认同)