2017-02-18 49 views
-2
import sys 
g = int(input()) 
def TwoStackSum(): 
    sumList = [] 
    for a0 in range(g): 
      n,m,x = input().strip().split(' ') 
      n,m,x = [int(n),int(m),int(x)] 
      a = list(map(int, input().strip().split(' '))) 
      b = list(map(int, input().strip().split(' '))) 
      while sum(sumList) < x: 
       try: 
        sumList.append(a.pop(a0)) 
        sumList.append(b.pop(a0)) 
       except IndexError: 
        break 
    while sum(sumList) > x: 
     sumList.pop(len(sumList)-1) 
    print(len(sumList)) 
    sumList.clear() 
    TwoStackSum() 

TwoStackSum() 

我想運行TwoStackSum函數的次數與for循環中的範圍相同,但運行時沒有任何限制。如何循環這個函數一定的時間?

+0

是你的意圖遞歸調用函數或讓它從調用者調用N次? – paisanco

+0

我想調用g次 –

+0

你調用'TwoStackSum()'從它裏面調度!難怪爲什麼它永遠運行。 –

回答

2

要調用你的方法g時間,這樣做:

for _ in range(g): 
    TwoStackSum() 

但是從功能(sumList.clear()後)內取出TwoStackSum()呼叫,否則會永遠循環下去。目前,當你調用你的方法時,它會無限期地自己調用它,從它自己再次調用它的地方開始。

如果像現在這樣運行,您將得到一個RuntimeError: 'maximum recursion depth exceeded'

但是要確保這是你想要的,因爲對於函數內部循環:

for a0 in range(g): 

也將被稱爲g倍,爲TwoStackSum()函數的每次調用。