TheAlgorithms-Python

Форк
0
/
lucas_series.py 
66 строк · 1.8 Кб
1
"""
2
https://en.wikipedia.org/wiki/Lucas_number
3
"""
4

5

6
def recursive_lucas_number(n_th_number: int) -> int:
7
    """
8
    Returns the nth lucas number
9
    >>> recursive_lucas_number(1)
10
    1
11
    >>> recursive_lucas_number(20)
12
    15127
13
    >>> recursive_lucas_number(0)
14
    2
15
    >>> recursive_lucas_number(25)
16
    167761
17
    >>> recursive_lucas_number(-1.5)
18
    Traceback (most recent call last):
19
        ...
20
    TypeError: recursive_lucas_number accepts only integer arguments.
21
    """
22
    if not isinstance(n_th_number, int):
23
        raise TypeError("recursive_lucas_number accepts only integer arguments.")
24
    if n_th_number == 0:
25
        return 2
26
    if n_th_number == 1:
27
        return 1
28

29
    return recursive_lucas_number(n_th_number - 1) + recursive_lucas_number(
30
        n_th_number - 2
31
    )
32

33

34
def dynamic_lucas_number(n_th_number: int) -> int:
35
    """
36
    Returns the nth lucas number
37
    >>> dynamic_lucas_number(1)
38
    1
39
    >>> dynamic_lucas_number(20)
40
    15127
41
    >>> dynamic_lucas_number(0)
42
    2
43
    >>> dynamic_lucas_number(25)
44
    167761
45
    >>> dynamic_lucas_number(-1.5)
46
    Traceback (most recent call last):
47
        ...
48
    TypeError: dynamic_lucas_number accepts only integer arguments.
49
    """
50
    if not isinstance(n_th_number, int):
51
        raise TypeError("dynamic_lucas_number accepts only integer arguments.")
52
    a, b = 2, 1
53
    for _ in range(n_th_number):
54
        a, b = b, a + b
55
    return a
56

57

58
if __name__ == "__main__":
59
    from doctest import testmod
60

61
    testmod()
62
    n = int(input("Enter the number of terms in lucas series:\n").strip())
63
    print("Using recursive function to calculate lucas series:")
64
    print(" ".join(str(recursive_lucas_number(i)) for i in range(n)))
65
    print("\nUsing dynamic function to calculate lucas series:")
66
    print(" ".join(str(dynamic_lucas_number(i)) for i in range(n)))
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.