Как исправить эту проблему цикла while в факториальной процедуре> - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь определить факториальную процедуру с этими кодами, но в результате я получаю n ^ 2, а не n * (n-1) * (n-2) ...... 1.Кажется, что i n был реализован только один раз, когда i = n.Я запутался и в чем проблема?

def factorial(n):           
    i = 1
    while n >=i:
        result = i * n
        i = i + 1
    return result

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Если вы хотите изменить свою логику, см. @Blhsing 'answer.

Более простой способ реализации факториала выглядит так:

def factorial(n):
    if not n:
        return 1
    else:
        return n * factorial(n-1)

Помните, что math.factorial также существует. Это лучшее решение, от которого вам не требуется создавать функцию самостоятельно.

0 голосов
/ 20 апреля 2019

Вы должны продолжать агрегировать операцию по result вместо:

def factorial(n):
    result = 1
    while n > 1:
        result *= n
        n -= 1
    return result

, чтобы factorial(4) вернул: 24

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...