Tutorial Playlist
200 Lessons1. Introduction to Python
2. Features of Python
3. How to install python in windows
4. How to Install Python on macOS
5. Install Python on Linux
6. Hello World Program in Python
7. Python Variables
8. Global Variable in Python
9. Python Keywords and Identifiers
10. Assert Keyword in Python
11. Comments in Python
12. Escape Sequence in Python
13. Print In Python
14. Python-if-else-statement
15. Python for Loop
16. Nested for loop in Python
17. While Loop in Python
18. Python’s do-while Loop
19. Break in Python
20. Break Pass and Continue Statement in Python
21. Python Try Except
22. Data Types in Python
23. Float in Python
24. String Methods Python
25. List in Python
26. List Methods in Python
27. Tuples in Python
28. Dictionary in Python
29. Set in Python
30. Operators in Python
31. Boolean Operators in Python
32. Arithmetic Operators in Python
33. Assignment Operator in Python
34. Bitwise operators in Python
35. Identity Operator in Python
36. Operator Precedence in Python
37. Functions in Python
38. Lambda and Anonymous Function in Python
39. Range Function in Python
40. len() Function in Python
41. How to Use Lambda Functions in Python?
42. Random Function in Python
43. Python __init__() Function
44. String Split function in Python
45. Round function in Python
46. Find Function in Python
47. How to Call a Function in Python?
48. Python Functions Scope
49. Method Overloading in Python
50. Method Overriding in Python
51. Static Method in Python
52. Python List Index Method
53. Python Modules
54. Math Module in Python
55. Module and Package in Python
56. OS module in Python
57. Python Packages
58. OOPs Concepts in Python
59. Class in Python
60. Abstract Class in Python
61. Object in Python
62. Constructor in Python
63. Inheritance in Python
64. Multiple Inheritance in Python
65. Encapsulation in Python
66. Data Abstraction in Python
67. Opening and closing files in Python
68. How to open JSON file in Python
69. Read CSV Files in Python
70. How to Read a File in Python
71. How to Open a File in Python?
72. Python Write to File
73. JSON Python
74. Python JSON – How to Convert a String to JSON
75. Python JSON Encoding and Decoding
76. Exception Handling in Python
77. Recursion in Python
78. Python Decorators
79. Python Threading
80. Multithreading in Python
81. Multiprocеssing in Python
82. Python Regular Expressions
83. Enumerate() in Python
84. Map in Python
85. Filter in Python
86. Eval in Python
87. Difference Between List, Tuple, Set, and Dictionary in Python
88. List to String in Python
89. Linked List in Python
90. Length of list in Python
91. Reverse a List in Python
92. Python List remove() Method
93. How to Add Elements in a List in Python
94. How to Reverse a List in Python?
95. Difference Between List and Tuple in Python
96. List Slicing in Python
97. Sort in Python
98. Merge Sort in Python
99. Selection Sort in Python
100. Sort Array in Python
101. Sort Dictionary by Value in Python
102. Datetime Python
103. Random Number in Python
104. 2D Array in Python
105. Abs in Python
106. Advantages of Python
107. Anagram Program in Python
108. Append in Python
109. Applications of Python
110. Armstrong Number in Python
111. Assert in Python
112. Binary Search in Python
113. Binary to Decimal in Python
114. Bool in Python
115. Calculator Program in Python
116. chr in Python
117. Control Flow Statements in Python
118. Convert String to Datetime Python
119. Count in python
120. Counter in Python
121. Data Visualization in Python
122. Datetime in Python
123. Extend in Python
124. F-string in Python
125. Fibonacci Series in Python
Now Reading
126. Format in Python
127. GCD of Two Numbers in Python
128. How to Become a Python Developer
129. How to Run Python Program
130. In Which Year Was the Python Language Developed?
131. Indentation in Python
132. Index in Python
133. Interface in Python
134. Is Python Case Sensitive?
135. Isalpha in Python
136. Isinstance() in Python
137. Iterator in Python
138. Join in Python
139. Leap Year Program in Python
140. Lexicographical Order in Python
141. Literals in Python
142. Matplotlib
143. Matrix Multiplication in Python
144. Memory Management in Python
145. Modulus in Python
146. Mutable and Immutable in Python
147. Namespace and Scope in Python
148. OpenCV Python
149. Operator Overloading in Python
150. ord in Python
151. Palindrome in Python
152. Pass in Python
153. Pattern Program in Python
154. Perfect Number in Python
155. Permutation and Combination in Python
156. Prime Number Program in Python
157. Python Arrays
158. Python Automation Projects Ideas
159. Python Frameworks
160. Python Graphical User Interface GUI
161. Python IDE
162. Python input and output
163. Python Installation on Windows
164. Python Object-Oriented Programming
165. Python PIP
166. Python Seaborn
167. Python Slicing
168. type() function in Python
169. Queue in Python
170. Replace in Python
171. Reverse a Number in Python
172. Reverse a string in Python
173. Reverse String in Python
174. Stack in Python
175. scikit-learn
176. Selenium with Python
177. Self in Python
178. Sleep in Python
179. Speech Recognition in Python
180. Split in Python
181. Square Root in Python
182. String Comparison in Python
183. String Formatting in Python
184. String Slicing in Python
185. Strip in Python
186. Subprocess in Python
187. Substring in Python
188. Sum of Digits of a Number in Python
189. Sum of n Natural Numbers in Python
190. Sum of Prime Numbers in Python
191. Switch Case in Python
192. Python Program to Transpose a Matrix
193. Type Casting in Python
194. What are Lists in Python?
195. Ways to Define a Block of Code
196. What is Pygame
197. Why Python is Interpreted Language?
198. XOR in Python
199. Yield in Python
200. Zip in Python
The Fibonacci series in Python is an enchanting sequence of numbers with a profound presence in nature, art, and algorithms that has been a point of intrigue for millennia. In this tutorial, we'll not only delve deep into its mathematical foundations but also explore the most efficient techniques to compute it using Python. As we progress, we'll unravel why this series remains pivotal for both novice and expert programmers, as well as its broader significance in the fields of science and design.
Spanning from the spiral arrangements of leaves to the mesmerizing designs in Renaissance art, the Fibonacci series proves its universality across domains. Its simple principle—each number being the sum of its two predecessors—holds within its layers of complexity. Through this tutorial, we aim to guide you through the intricate process of computing the Fibonacci series in Python, illuminating the nuances and performance considerations along the way.
Here is a program for printing Fibonacci number in Python using the native approach:
Code:
p = 8
n1 = 0
n2 = 1
next_num = n2
count = 1
while count <= p:
print(next_num, end=" ")
count += 1
n1, n2 = n2, next_num
next_num = n1 + n2
print()
Explanation:
1. p = 8: This line initializes the variable p with the value 8. This variable represents the number of terms in the Fibonacci sequence that will be generated.
2. n1 = 0 and n2 = 1: These lines initialize two variables, n1 and n2, with the first two terms of the Fibonacci sequence: 0 and 1, respectively.
3. next_num = n2: This line sets the variable next_num to the value of n2, which is the second term in the sequence.
4. count = 1: This line initializes the variable count to 1. It will be used to keep track of how many terms have been printed so far.
5. The while loop: This loop runs as long as count is less than or equal to p, which means it will generate p terms of the Fibonacci sequence.
6. Inside the loop:
7. print(): After the loop completes, this line adds a new line to separate the Fibonacci sequence from any subsequent output.
Here is a Python program to print fibonacci series using recursion:
Code:
def fibonacci(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# Get the input from the user
num_terms = int(input("Enter the number of Fibonacci terms you want: "))
# Print Fibonacci sequence
print("Fibonacci sequence:")
for i in range(num_terms):
print(fibonacci(i))
Explanation:
1. def fibonacci(n): This is a recursive function definition that calculates the n-th term of the Fibonacci sequence. It uses the following logic:
2. num_terms = int(input("Enter the number of Fibonacci terms you want: ")): This line prompts the user to enter the number of Fibonacci terms they want to generate and converts the input to an integer stored in the variable num_terms.
3. print("Fibonacci sequence:"): This line just prints a header to indicate that the Fibonacci sequence is being printed.
4. for i in range(num_terms): This loop iterates from 0 up to num_terms - 1. This is used to generate the first num_terms of the Fibonacci sequence.
5. Inside the loop:
print(fibonacci(i)): This line prints the i-th term of the Fibonacci sequence by calling the Fibonacci function with argument i.
The code generates the Fibonacci sequence recursively. However, it's important to note that this approach is inefficient for larger values of n due to repeated calculations. This is because the recursive function recalculates the same terms multiple times. A more efficient approach is to use dynamic programming or an iterative approach.
Here is a program for a Fibonacci sequence Python using dynamic programming:
Code:
def fibonacci_dp(n):
if n <= 0:
return 0
elif n == 1:
return 1
fib = [0] * (n + 1)
fib[1] = 1
for i in range(2, n + 1):
fib[i] = fib[i - 1] + fib[i - 2]
return fib[n]
# Get the input from the user
num_terms = int(input("Enter the number of Fibonacci terms you want: "))
# Print Fibonacci sequence
print("Fibonacci sequence:")
for i in range(num_terms):
print(fibonacci_dp(i))
Explanation:
This code snippet defines a function fibonacci_dp(n) that calculates the n-th Fibonacci number using a dynamic programming approach.
1. def fibonacci_dp(n): This is a function definition for calculating the n-th Fibonacci number using dynamic programming.
2. num_terms = int(input("Enter the number of Fibonacci terms you want: ")): This line prompts the user to enter the number of Fibonacci terms they want to generate and converts the input to an integer stored in the variable num_terms.
3. print("Fibonacci sequence:"): This line just prints a header to indicate that the Fibonacci sequence is being printed.
4. for i in range(num_terms): This loop iterates from 0 up to num_terms - 1. This is used to generate and print the first num_terms Fibonacci numbers.
5. Inside the loop:
print(fibonacci_dp(i)): This line prints the i-th Fibonacci number by calling the fibonacci_dp function with argument i.
The dynamic programming approach efficiently computes Fibonacci numbers by avoiding redundant calculations by storing previously computed values. This makes it a much better choice for larger values of n compared to the naive recursive approach.
Here is an example of optimizing Python Fibonacci series:
Code:
def fibonacci(k):
x = 0
y = 1
if k < 0:
print("wrong input")
elif k == 0:
return 0
elif k == 1:
return y
else:
for i in range(1, k):
z = x + y
x = y
y = z
return y
print(fibonacci(8))
Explanation:
This code defines a function fibonacci(k) that calculates the k-th Fibonacci number using an iterative approach.
1. def fibonacci(k): This is a function definition for calculating the k-th Fibonacci number using an iterative approach.
2. if k < 0: This condition checks if the input k is negative.
3. elif k == 0: This condition checks if k is equal to 0.
4. elif k == 1: This condition checks if k is equal to 1.
5. else: If none of the above conditions are met, this means k is greater than 1, so the loop approach will be used.
6. return y: After the loop completes, the value of y will hold the k-th Fibonacci number, so the function returns it.
7. print(fibonacci(8)): This line calls the Fibonacci function with an argument of 8 and prints the result.
The iterative approach calculates the Fibonacci number by iteratively updating the values of x and y while progressing through the sequence. This method is more efficient than the naive recursive approach because it avoids redundant calculations.
Here is another example of a Fibonacci program in Python using the cache:
Code:
from functools import lru_cache
@lru_cache(None)
def fibonacci(n: int) -> int:
if n < 0:
print("wrong input")
return
elif n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(8))
Explanation:
1. from functools import lru_cache: This line imports the lru_cache decorator from the functools module. lru_cache stands for "Least Recently Used Cache" and is used for memoization, which optimizes function calls by storing the results of expensive function calls and returning the cached result when the same inputs occur again.
2. @lru_cache(None): This line decorates the fibonacci function with the lru_cache decorator. The None argument means that there is no limit to the cache size. The decorator will automatically cache the results of function calls, making subsequent calls with the same input more efficient.
3. def fibonacci(n: int) -> int: This is the definition of the fibonacci function. It takes an integer n as an argument and returns an integer.
4. if n < 0: This condition checks if the input n is negative.
5. elif n < 2: This condition checks if n is less than 2.
6. return fibonacci(n - 1) + fibonacci(n - 2): This is the recursive part of the function.
7. print(fibonacci(8)): This line calls the fibonacci function with an argument of 8 and prints the result.
By using the lru_cache decorator, this code optimizes the Fibonacci calculation by avoiding redundant calculations and storing previously computed results. This makes the recursive approach much more efficient, especially for larger values of n.
Code:
def fibonacci(x, memo={}):
if x <= 0:
return 0
elif x == 1:
return 1
elif x in memo:
return memo[x]
else:
memo[x] = fibonacci(x-1) + fibonacci(x-2)
return memo[x]
# Driver Program
print(fibonacci(8))
Explanation:
This code defines a fibonacci function that calculates the x-th Fibonacci number using recursion and memoization.
Code:
def fibonacci_sequence(n):
fib_sequence = [0, 1]
for i in range(2, n):
next_fib = fib_sequence[i - 1] + fib_sequence[i - 2]
fib_sequence.append(next_fib)
return fib_sequence
num_terms = int(input("Enter the number of Fibonacci terms you want: "))
print("Fibonacci sequence:")
sequence = fibonacci_sequence(num_terms)
for num in sequence:
print(num)
Code:
xterms = int(input("How many terms? "))
x1, x2 = 0, 1
c = 0
if xterms <= 0:
print("Please enter a positive integer")
elif xterms == 1:
print("Fibonacci sequence upto",xterms,":")
print(x1)
else:
print("Fibonacci sequence:")
while c < xterms:
print(x1)
xth = x1 + x2
x1 = x2
x2 = xth
c += 1
Having now journeyed through the depths of the Fibonacci series and its implementation in Python, we've showcased its rich history and contemporary relevance. Understanding the Fibonacci series isn't just a rite of passage for a programmer, but an exploration of a pattern that has transcended time, existing in realms from the branching of trees to the spiraling galaxies.
As you continue your journey in the world of programming and data structures, consider upGrad's comprehensive courses that serve as beacons for upskilling professionals in the digital age.
A sequence where each number is the sum of the two preceding numbers, beginning usually with 0 and 1.
It's rooted in the golden ratio and mathematical induction, ensuring efficient computation of any Fibonacci number.
Absolutely! While recursion is a popular method, you can also compute the Fibonacci series using iterative loops, array manipulation, or even formulas like Binet's. Each approach has its advantages, and the choice often depends on considerations like performance needs and code simplicity.
Its patterns are observed in nature, art, and also have applications in algorithms and financial markets.
While both represent sequences, their computation diverges. Factorial multiplies numbers successively, while Fibonacci adds them.
PAVAN VADAPALLI
Director of Engineering
Director of Engineering @ upGrad. Motivated to leverage technology to solve problems. Seasoned leader for startups and fast moving orgs. Working …Read More
Popular
Talk to our experts. We’re available 24/7.
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
upGrad does not grant credit; credits are granted, accepted or transferred at the sole discretion of the relevant educational institution offering the diploma or degree. We advise you to enquire further regarding the suitability of this program for your academic, professional requirements and job prospects before enrolling. upGrad does not make any representations regarding the recognition or equivalence of the credits or credentials awarded, unless otherwise expressly stated. Success depends on individual qualifications, experience, and efforts in seeking employment.
upGrad does not grant credit; credits are granted, accepted or transferred at the sole discretion of the relevant educational institution offering the diploma or degree. We advise you to enquire further regarding the suitability of this program for your academic, professional requirements and job prospects before enr...