Загрузка...

Функция, которая вызывает себя

Имя down стоит внутри down, и каждый шаг передаёт число на единицу меньше. Поэтому down(3) пишет 3, затем 2, затем 1.

Строка if n == 0: return — это остановка. Когда n равно 0, выполняется она, и down больше не используется. Без неё шаги не кончаются, и программа не доходит до конца. Эта сломанная форма ниже не показана.

3, затем 2, затем 1

python
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). Меньшие числа выходят первыми, потому что каждый шаг ждёт, пока внутренний не закончится.

1, затем 2, затем 3

python
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 не доходит. Остановка срабатывает сразу.

down(0) ничего не пишет

python
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.

Проследите числа

  1. Что пишет первая программа, сначала и потом?
  2. Что пишет вторая программа, сначала и потом?
  3. Что пишет третья программа?
  4. Вы убираете остановку на 0. Программа доходит до конца?

Что делает down

Имя down внутри down, с n - 1, спускается от 3 до 1. print до этого шага пишет 3, затем 2, затем 1. print после пишет 1, затем 2, затем 3. if n == 0: return — причина, по которой программа заканчивается. down(0) ничего не пишет.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
5
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху