Найти - Пользователи
Полная версия: СРОЧНО. Нужно всего лишь ответить на вопрос.
Начало » Python для новичков » СРОЧНО. Нужно всего лишь ответить на вопрос.
1
DmFors
 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 шаге хода программы. С чем связана смена переменной?
doza_and
Смена связана с возвратом из функции. На 40 итерации у вас 40 вложенных друг в друга функций в каждой из них свой x со своим значением. точное расположение в памяти можете посмотреть при пмощи
 print(id(x),x)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB