Skip to content

Commit

Permalink
Update lucas_series.py to include another method (TheAlgorithms#3620)
Browse files Browse the repository at this point in the history
* Update lucas_series.py

Added another method to calculate lucas_numbers

* Fix pre-commit error

* Update lucas_series.py

* Update lucas_series.py

* Update lucas_series.py

* Update lucas_series.py
  • Loading branch information
Kush1101 authored Oct 26, 2020
1 parent 81b82be commit b93a9d8
Showing 1 changed file with 56 additions and 9 deletions.
65 changes: 56 additions & 9 deletions maths/lucas_series.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,69 @@
# Lucas Sequence Using Recursion
"""
https://en.wikipedia.org/wiki/Lucas_number
"""


def recur_luc(n):
def recursive_lucas_number(n):
"""
>>> recur_luc(1)
Returns the nth lucas number
>>> recursive_lucas_number(1)
1
>>> recur_luc(0)
>>> recursive_lucas_number(20)
15127
>>> recursive_lucas_number(0)
2
>>> recursive_lucas_number(25)
167761
>>> recursive_lucas_number(-1.5)
Traceback (most recent call last):
...
TypeError: recursive_lucas_number accepts only integer arguments.
"""
if n == 1:
return n
if n == 0:
return 2
return recur_luc(n - 1) + recur_luc(n - 2)
if not isinstance(n, int):
raise TypeError("recursive_lucas_number accepts only integer arguments.")

return recursive_lucas_number(n - 1) + recursive_lucas_number(n - 2)


def dynamic_lucas_number(n: int) -> int:
"""
Returns the nth lucas number
>>> dynamic_lucas_number(1)
1
>>> dynamic_lucas_number(20)
15127
>>> dynamic_lucas_number(0)
2
>>> dynamic_lucas_number(25)
167761
>>> dynamic_lucas_number(-1.5)
Traceback (most recent call last):
...
TypeError: dynamic_lucas_number accepts only integer arguments.
"""
if not isinstance(n, int):
raise TypeError("dynamic_lucas_number accepts only integer arguments.")
if n == 0:
return 2
if n == 1:
return 1
a, b = 2, 1
for i in range(n):
a, b = b, a + b
return a


if __name__ == "__main__":
limit = int(input("How many terms to include in Lucas series:"))
print("Lucas series:")
for i in range(limit):
print(recur_luc(i))
from doctest import testmod

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

0 comments on commit b93a9d8

Please sign in to comment.