Skip to main content

Step-by-step: factorial computation (part d49d)

Updated 2 min readMarkdown

Медленный разбор помогает понять код, а не просто скопировать его.

Задача

Вычислить факториал натурального числа n: n! = 1 · 2 · … · n, а 0! = 1. Самая первая задача на циклы в учебнике.

Решение

def factorial(n: int) -> int:
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result


print(factorial(6))

Как это работает

Аккумулятор result умножается на числа от 2 до n. Итеративное решение предпочтительнее рекурсивного: оно не переполняет стек вызовов.

Пример работы

720

Сложность

O(n) по времени, O(1) по памяти.

Разбор по шагам

  1. Шаг 1. Входные данные. Проверяем, что приходит в функцию, и какие значения считаются корректными.
  2. Шаг 2. Основной цикл. Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации.
  3. Шаг 3. Результат. Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Когда каждый шаг понятен, доработка решения перестаёт быть лотереей.

Читайте также:

каждой · Задача · работает · циклы · времени · случаи · натурального · перестаёт · значение · Пример · функцию · Результат · задача · переполняет · условию · лотереей · приходит · считаются · числа · factorial(n · здесь · шагам · python · следим · вызовов · Аккумулятор · Проверяем

No comments yet. Be the first to comment.

More from this blog