2015-11-23 20 views
2

我鍵入一個Python程序來查找第n個素數。在Python中查找素數時發生無盡的重複錯誤

def prime(a, b = 2): 

    def prime(a, b=2): 
     def gcd(x, y): 
      if (x % y == 0): 
       return y 
      else: 
       return gcd(x, y - 1) 

     if (gcd(b, b-1) > 1): 
      return prime(a, b+1) 
     elif (a - 1 > 0): 
      return prime(a-1, b+1) 
     else: return b 

它成功地輸出第94質數爲素數(94) - > 491

然而,我得到的環形重複錯誤輸出時,我計算第95質數。爲什麼會發生?謝謝回答。

回答

3

94是python的maximum recursion depth。您可以增加最大遞歸深度,也可以使用迭代方法而不是當前的遞歸方法。簡單來說,遞歸就是當你從內部調用一個函數時。要增加最大遞歸深度:

import sys 

sys.setrecursionlimit(2000) 

您應該能夠自己想出一個迭代版本。希望有所幫助!

+0

謝謝穆雷!非常感謝您的幫助。 –

+0

沒問題;)但是,如果你可以點擊這個答案左邊的刻度來給我更多的代表...:D –

+0

當然:)只需點擊:D –