Не выводится переменная
Почему у меня тут не выводится переменная number? Не могу понять
def rec():
number = int(input())
if number == 0:
return
return rec()
print(number)
rec()
Хотя в таком исполнении она выводится:
def reverse():
number = int(input())
if number != 0:
reverse()
print(number)
reverse()
Ответы (2 шт):
Оператор return завершает текущее выполнение функции и производит возвра значения в точку вызова, соответственно, print и что угодно ещё после ретёрна не работает. Варианта решения есть разные.
Либо печатайте перед возвратом значения:
def rec():
number = int(input())
if number == 0:
return
print(number)
return rec()
rec()
Либо, что лучше, печатайте результат выполнения функции:
def rec():
number = int(input())
if number == 0:
return
return rec()
print(rec())
Лучший это вариант потому, что функции должны делать что-то одно конкретное, в данном случае это запрос на ввод числа, а отображение этого числа уже отдельная задача.
Кстати, задачу проще решить без рекурсии:
def rec():
number = 0
while number == 0:
number = int(input())
return number
print(rec())
После оператора return функция прекращает работу, как break;, но только возвращает информацию.