2013-06-18 54 views
3

你好,我對Python很新,想知道你是否可以幫我一些東西。 我一直在玩這個代碼,似乎無法得到它的工作。返回語句的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,那麼它應打印「是」。 我錯過了什麼嗎?

回答

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 
+0

爲什麼不直接添加返回答案?那麼我可以刪除我的答案:P –

+2

@JoranBeasley:我實際上是先測試代碼。 :-P –

+0

嘿嘿測試是爲了懦夫:P –