2017-02-18 2 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 times –

+0

, вы вызываете 'TwoStackSum()' из-за нестандартного изнутри! неудивительно, почему он работает вечно. –

ответ

2

Для вызова вашего метода g раз, сделайте следующее:

for _ in range(g): 
    TwoStackSum() 

Но удалить TwoStackSum() вызов внутри функций (после sumList.clear()), в противном случае это будет цикл навсегда. В настоящее время, когда вы вызываете свой метод, он вызывает себя, откуда он снова называет себя, неопределенно.

Вы получите RuntimeError: 'maximum recursion depth exceeded', если вы запустите его, как сейчас.

Однако убедитесь, что это то, что вы хотите, потому что цикл внутри функции:

for a0 in range(g): 

также будем называть g раз, при каждом вызове функции TwoStackSum().

Смежные вопросы