Как вернуть одно значение и выйти из рекурсии
Я должен переписать код рекурсивно, но рекурсия у меня на уровне easy-задач на литкоде.
Есть код:
def main():
for i in range(1, n):
recursion(i)
def recursion(i):
for ...:
if ...:
return False
elif ...:
recursion(i)
Как сделать так, чтобы этот return False остановил цикл for в функции main(), то есть в целом прекратил выполняться (и рекурсия прекратилась), а если этого return False не произошло за весь цикл, то после завершения цикла сделать return True
Я пробовал писать print("NO"); return, но он мне 3 "NO" печатает и понятно почему, с флагами пытался делать, но безуспешно, 100% есть проще
UPD Циклом это должно выглядеть так:
def main():
recursion()
def recursion():
for i in range(1, n):
value[i] = ...
if ...:
return False
elif:
...
return True
Ответы (2 шт):
Если я все верно понял:
- Вы неверно преобразовали цикл в рекурсию
- Думаю так ваша проблема решиться
def main():
if recursion(1):
print('Not False')
else:
print('False')
def recursion(i):
for ...:
if ...:
return False
elif ...:
return recursion(i+1) # <---
return True
Полной уверености нет, но для раннего прерывания рекурсии и цикла нужно возвращать из recursion флажок "продолжай", который проверяет вызывающая сторона:
def main():
for i in range(1, n):
if not recursion(i):
break
def recursion(i):
for ...:
if ...:
return False
elif ...:
if not recursion(i):
return False
return True