2017-09-10 133 views
0

運行該程序時,它計算所需的正確答案。 但是,if循環中的返回函數不返回所需的答案,而是返回「無」。 我試過了,並且我確定它有些愚蠢的我失蹤了。python返回函數不通過值

def is_prime(n): 
    #function tocheck if number is prime 
    for i in range(2,n): 
     #print (i) 
     if n%i==0: 
      return False 
    return True 

def gap(g,m,n): 
    #Function to find prime number 
    #pair with prime gap "g" 
    print (is_prime(m),m) 
    print (is_prime(m+g),m+g) 
    if is_prime(m) and is_prime(m+g): 
     print ("This is the right answer : ",[m,g+m]) 
     #value not returning 
     return [m,g+m] 

    elif g+m<n: 
     print("restart with",m+1) 
     gap(g,m+1,n) 

print (gap(8,300,400)) 
+3

請修復您的縮進。你的代碼是不可讀的。 –

+0

在'elif'中,你需要使用'return'語句'返回間隙(g,m + 1,n)' – ettanany

+0

在'elif'塊的末尾加上'return gap(g,m + 1,n)' – MedAli

回答

1

我認爲你需要return gap(g,m+1,n)。否則該函數將不會返回遞歸調用的結果。

+0

非常感謝!我一直試圖弄清楚一段時間..你的靈魂工程..! –