# Writing tests for factorial computation

Разберём решение и сразу накроем его тестами — это хороший стиль работы с кодом.

## Задача

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

## Решение

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


print(factorial(6))
```

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

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

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

```text
720
```

## Сложность

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


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

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

[примерах](https://paper.wf/nina1998log/aunty-kerala-xnxx) · [факториал](https://gellaryforum.freeflarum.com/d/28006-28006-dcard) · [print(factorial(6](https://drop.xtrafrancyz.net/selif/4hjhkzqgaw.pdf) · [защищает](https://discuss.tchncs.de/post/65439723) · [натурального](https://hey.xyz/posts/my11tfhhp6pfd22y6d) · [учебных](https://team.writefreely.dev/oz8a0576/zhi-ming-kong) · [требуют](https://articlescad.com/hayvanl-yeti-kin-i-erik-hakk-nda-yasal-ve-g-venli-bilgi-376698.html) · [работы](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/sweetwovo-0eab55.pdf) · [нескольких](https://2009worldlungcancer.org/voyeur+ip+cam?f=linkcentre) · [Такой](https://clarasimon273.overblog.fr/2026/10/boruto-breakfast-porn-comic-hinata-milf-hentai-rule-34.html) · [умножается](https://paper.wf/annaneumann80log/l-ymknk-n-tnyk-klan-mn-shhd-lbhy) · [Решение](https://ecency.com/@stanislavje5847/gv-829eeb) · [Проверка](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/anti-estrogen-and-progesterone-ada40d.pdf) · [return](https://statics.pancake.vn/web-media-264/43/b6/a4/a0/71e226256ff0e62eaa82fa2e371489c78bfa96f02cd305a91abd89e5.pdf) · [factorial(n](https://stopmagazin.sk/haunted+cemetery+wallpaper?f=instapaper) · [предпочтительнее](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [переполняет](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [Пример](https://test3.space-2.de/%E6%89%AB%E6%A5%BC%E6%89%93%E8%83%B6?f=instapaper) · [проверка](https://statics.pancake.vn/web-media-264/8e/21/ea/11/ce0cd9dbf935ff97a4a98a74d2d3bd7535eaf9a3c5c2291b0bd04481.pdf) · [памяти](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [Аккумулятор](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/viral-video-mms-leaked-0babe4.pdf) · [Сложность](https://blogfreely.net/nataliarussell2/multisensory-perception-definition)

