mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-03-19 13:09:48 +00:00
Update lucas_series.py to include another method (#3620)
* 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
This commit is contained in:
parent
81b82bea47
commit
b93a9d8e8f
@ -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)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user