Python问题与return语句

时间:2013-06-18 16:08:53

标签: 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()

现在isPrime方法的输出如下:

is Prime:  7
No

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

1 个答案:

答案 0 :(得分: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)

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

else:
    return isPrime(i+1,n)

现在你的代码打印出来了:

>>> isPrime(2,7)
is Prime:  7
True