Уведомления

Группа в Telegram: @pythonsu

#1 Март 6, 2020 05:01:27

DmFors
Зарегистрирован: 2020-03-06
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

СРОЧНО. Нужно всего лишь ответить на вопрос.

 def f(n):
    print("Начинаю. n =", n)
    if n == 0:
        result = 1
    else:
        x = n - 1
        print("n =", n)
        sub_result = f(x)
        print("/n =", n)
        result = sub_result * n
    print("Заканчиваю. n =", n, "result =", result)
    return result
x = int(input("Введите число: "))
print(f(x))[i][/i]
#Приветствую. Если пройти этот код по шагам, то выясняется, что на 40ом шаге программы n=0. После того, как происходит возврат значения : return result, result=1, а n превращается в n=1. Так вот, почему эта n превращается в единицу на 41 шаге хода программы. С чем связана смена переменной?

Отредактировано DmFors (Март 6, 2020 05:01:51)

Офлайн

#2 Март 6, 2020 07:11:20

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

СРОЧНО. Нужно всего лишь ответить на вопрос.

Смена связана с возвратом из функции. На 40 итерации у вас 40 вложенных друг в друга функций в каждой из них свой x со своим значением. точное расположение в памяти можете посмотреть при пмощи

 print(id(x),x)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version