# Solving and testing factorial computation (part d141)

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

## Задача

Вычислить факториал натурального числа `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/nina1970log/tamil-gay-sex-video) · [хороший](https://paper.wf/petra1967log/wd-yt-llmtzwjyn-fdl-wd-yt-ljm-wlnyk-lmthrk) · [result](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az2xeAj4dcmvzRzphqv1GaR1cVEVp/issues/20eda968248c256550a674b69d3cc410c61bf019) · [умножается](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-bd881e.pdf) · [Сложность](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-0a1c93.pdf) · [range(2](https://sofiamartin803.overblog.fr/2026/10/mai-xiaowen-in-red-lingerie-video-gallery-asian-adult-photos.html) · [Самая](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [стиль](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/dirtyecho8-feb1a0.pdf) · [работает](https://exhibit83335.mataroa.blog/blog/sarah-estanislau-nua-pelada-fotos-e-videos-vazados-quentes/) · [крайние](https://sway.cloud.microsoft/mo8gIWFbTsJlFTFi) · [требуют](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [циклы](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/digit-sum-oshibki-mvfiijdx.md) · [вызова](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/l-n-h-ng-6f102f.pdf) · [второй](https://drop.xtrafrancyz.net/selif/562se0gzdt.pdf) · [factorial(n](https://rentry.co/index-of-p99ccs201902-787984) · [рекурсивного](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/cc-3e7203.pdf) · [привычка](https://hey.xyz/posts/3kavhv6t3nytdt1p5xg) · [памяти](https://discuss.tchncs.de/post/65441852) · [предпочтительнее](https://portfolio17543.mataroa.blog/blog/mama-de-sebastian-moreno/) · [тестами](https://drop.xtrafrancyz.net/selif/49xmif7ur5.pdf) · [Тесты](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-e0a477.pdf) · [проверка](https://jaflysilve.freeflarum.com/d/4135-4135-alexandra-zubko) · [удобны](https://personaclub37.ru/%E8%8A%B1%E8%87%82%E5%87%89%E5%A4%AA?f=linkcentre) · [Проверка](https://blog.spikyhair.club/oz4c1a14/sanadong-man) · [Такой](https://rentry.co/vip-nerdyb-leak-870211) · [кодом](https://ikue.work/starart7256?f=instapaper) · [Пример](https://monevonline.com/story/sks+ybny+mHrm?f=linkcentre) · [накроем](https://kraldaniel33.wixsite.com/my-site-1/post/rule34-vault---anime-hentai-gallery-naruto-genshin-impact--more) · [случай](https://blog.spikyhair.club/oza7ab90/cursos-para-aprender-a-usar-shopify) · [работы](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da)

