mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-03-20 05:29: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
|
1
|
||||||
>>> recur_luc(0)
|
>>> recursive_lucas_number(20)
|
||||||
|
15127
|
||||||
|
>>> recursive_lucas_number(0)
|
||||||
2
|
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:
|
if n == 1:
|
||||||
return n
|
return n
|
||||||
if n == 0:
|
if n == 0:
|
||||||
return 2
|
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__":
|
if __name__ == "__main__":
|
||||||
limit = int(input("How many terms to include in Lucas series:"))
|
from doctest import testmod
|
||||||
print("Lucas series:")
|
|
||||||
for i in range(limit):
|
testmod()
|
||||||
print(recur_luc(i))
|
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