Member 13609237 Ответов: 2

Мне нужна небольшая помощь с функциями


Здравствуйте, я, кажется, не могу понять этот код, речь идет о факторе a number, но я не понимаю, как работает функция, я был бы рад, если бы кто-то мог помочь с этим.

коэффициент защиты(x):
если x==0:
возврат 1
возвращаемый коэффициент x * (x - 1)

x=int(вход())
печать (фактор(x))

Что я уже пробовал:

Просто понимание....................................................................

2 Ответов

Рейтинг:
7

Peter Vegter

В конце концов значение x достигает 0 (из-за инструкции x-1) и перестает вызывать себя (факториал 0 определяется как 1).
Вся эта функция также объясняется во второй ссылке в моем первом ответе. Вы также можете записать эту функцию как:

def factor(x):
    result = 1
    while x > 0: # x > 1 will do
       result = x * result
       x = x - 1
    return result


Member 13609237

Привет, думаю, теперь я понимаю, зачем нужны строки "если x == 0:
возврат 1"
Это потому, что функция не будет иметь предела, и она может превратиться в цикл, верно?
Ну что ж, большое вам спасибо.

Peter Vegter

Добро пожаловать, и да, вы правы насчет ограничения функций. Функция должна когда-нибудь закончиться... :)
Рекурсивную функцию обычно нелегко проследить и понять. Молодец!
Спасибо за ваши добрые ответы и голоса!

Рейтинг:
13

Peter Vegter

Эта функция вычисляет факториал числа x.
Пожалуйста смотрите: https://en.wikipedia.org/wiki/Factorial[^]

Функция вызывает саму себя: это рекурсивная функция.
Пожалуйста смотрите: https://www.programiz.com/python-programming/recursion[^]


Member 13609237

Здравствуйте, спасибо за ваш ответ, у меня есть несколько небольших вопросов. Откуда функция знает, как перестать вызывать саму себя? И зачем нужен оператор "if" "If x == 0 then return 1" Если я удалю эти 2 строки и позволю только "return x*factor(x-1)", то программа даже не будет работать! Почему это так?