2012-06-16 168 views
0

我編寫了應該打印出100到200之間的素數的程序(我在程序中添加了一些額外的打印命令,以便我可以看到它的位置)任何人都可以給我一個暗示爲什麼它停在137,而腳本正在檢查這個數字?程序意外停止

謝謝!

下面是腳本:

import math 
import sys 
index=100.0 
checker=2.0 

def start(): 
    print("A") 
    global index 
    while index<=200.0: 
     fu1() 
    if index>200.0: 
     end() 

def fu1(): 
    print ("B") 
    print ("checker", checker) 
    print ("index", index) 
    global index 
    global checker 
    varb=index/checker 
    varb2=round(index/checker, 0) 
    if checker>=index: 
     print ("C") 
     print(index) 
     index=index+1.0 
     checker=2.0 
     start() 
    if varb2==varb: 
     print("D") 
     checker=2.0 
     index=index+1.0 
     start() 
    checker=checker+1.0 
    fu1() 


def end(): 
    print("E") 
    print("ENDED") 
    sys.exit() 

start() 
+0

也許這一個:http://stackoverflow.com/questions/3289430/python-recursion – PeterMmm

+0

爲什麼'fu1'自稱? –

+0

@DavidSchwartz - 遞歸? ;)雖然有點奇怪的遞歸,但我承認。 – weronika

回答

2

你的程序在遞歸調用(默認爲1000蟒蛇,我認爲)的數量達到了極限......您可以使用此命令sys.setrecursionlimit(5000)增加它例如。

+0

太棒了!非常感謝。我這樣做,它的工作。但是請你再告訴我一件事。打印所有素數達到200後,打印完「End」後,打印出如下所示的大量紅色消息:文件「 文件」C:\ Users \ Marcela \ Documents \ HH.txt「,第27行, fu1 start() 文件「C:\ Users \ Marcela \ Documents \ HH.txt」,第34行,第12行,開頭 end() 文件「C:\ Users \ Marcela \ Documents \ HH.txt」,第34行,在結束 sys.exit() SystemExit你現在可以告訴我,以避免這個? – user1460981

+0

再次感謝 - 它的工作原理,但不是檢查更大的數字看起來(通過Weronika的評論),我已經創建問題召回Fu1 「雖然」 - 如果您有關於如何以正確方式重現此過程的建議,請告訴我。 – user1460981