py-tools/tools/int_seq.py
2021-12-12 15:28:33 +01:00

36 lines
702 B
Python

import math
from typing import Dict
def factorial(n: int) -> int:
"""
n! = 1 * 2 * 3 * 4 * ... * n
1, 1, 2, 6, 24, 120, 720, ...
"""
return math.factorial(n)
def fibonacci(n: int, cache: Dict[int, int] = None) -> int:
"""
F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1
0, 1, 1, 2, 3, 5, 8, 13, 21, ...
"""
if n < 2:
return n
if cache is None:
cache = {}
if n not in cache:
cache[n] = fibonacci(n - 1, cache) + fibonacci(n - 2, cache)
return cache[n]
def triangular(n: int) -> int:
"""
a(n) = binomial(n+1,2) = n*(n+1)/2 = 0 + 1 + 2 + ... + n
0, 1, 3, 6, 10, 15, ...
"""
return n * (n + 1) // 2