Функция, которая вызывает себя
Имя down стоит внутри down, и каждый шаг передаёт число на единицу меньше. Поэтому down(3) пишет 3, затем 2, затем 1.
Строка if n == 0: return — это остановка. Когда n равно 0, выполняется она, и down больше не используется. Без неё шаги не кончаются, и программа не доходит до конца. Эта сломанная форма ниже не показана.
def down(n):
if n == 0:
return
print(n)
down(n - 1)
down(3)
На экране 3, затем 2, затем 1. print выполняется до следующего down. down(1) пишет 1 и потом доходит до down(0). down(0) попадает на остановку, ничего не пишет, и программа заканчивается.
Поставьте print на строку после down(n - 1). Меньшие числа выходят первыми, потому что каждый шаг ждёт, пока внутренний не закончится.
def down(n):
if n == 0:
return
down(n - 1)
print(n)
down(3)
На экране 1, затем 2, затем 3. down(0) по-прежнему ничего не пишет. print выполняется на обратном пути, поэтому 1 написан раньше 2, а 2 раньше 3.
down(0) сам по себе до print не доходит. Остановка срабатывает сразу.
def down(n):
if n == 0:
return
print(n)
down(n - 1)
down(0)
Экран остаётся пустым, и программа заканчивается. n уже 0, поэтому print и следующий down пропускаются.
Неверно прочитать экраны
Вторая программа — это не 3, затем 2, затем 1. Такой порядок у первой, где print стоит впереди. Уберите if n == 0: return из любой из них, и шаги не кончаются. Эту версию не запускайте.
Следующая страница — список значений. Здесь только функция, которая пользуется своим именем, и строка, которая останавливает её на 0.
Проследите числа
- Что пишет первая программа, сначала и потом?
- Что пишет вторая программа, сначала и потом?
- Что пишет третья программа?
- Вы убираете остановку на 0. Программа доходит до конца?
Что делает down
Имя down внутри down, с n - 1, спускается от 3 до 1. print до этого шага пишет 3, затем 2, затем 1. print после пишет 1, затем 2, затем 3. if n == 0: return — причина, по которой программа заканчивается. down(0) ничего не пишет.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху