اعداد فیبوناچی اعدادی هستند که به صورت سری مقابل نوشته می شوند. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
در علم ریاضیات رابطه ساخت عدد n ام با استفاده از دو عدد قبل از رابطه زیر بدست میآید:
Fn = Fn-1 + Fn-2
with seed values : F0 = 0 and F1 = 1.
می خواهیم با استفاده از حلقه while ده عدد از سری فیبوناچی را چاپ کنیم.
n = 10 num1 = 0 num2 = 1 next_number = num2 count = 1 while count <= n: print(next_number, end=" ") count += 1 num1, num2 = num2, next_number next_number = num1 + num2 print()
خروجی:
1 2 3 5 8 13 21 34 55 89
و حالا به صورت بازگشتی کدی مینویسیم که یک عدد فیبوناچی مورد نظر (که در اینجا عدد شماره 9 است) را تولید کند:
def Fibonacci(n): # Check if input is 0 then it will # print incorrect input if n < 0: print("Incorrect input") # Check if n is 0 # then it will return 0 elif n == 0: return 0 # Check if n is 1,2 # it will return 1 elif n == 1 or n == 2: return 1 else: return Fibonacci(n-1) + Fibonacci(n-2) # Driver Program print(Fibonacci(9))
خروجی:
34
کد بهینه شده سری اعداد فیبوناچی:
# Function for nth fibonacci number def fibonacci(n): a = 0 b = 1 # Check is n is less # than 0 if n < 0: print("Incorrect input") # Check is n is equal # to 0 elif n == 0: return 0 # Check if n is equal to 1 elif n == 1: return b else: for i in range(1, n): c = a + b a = b b = c return b # Driver Program print(fibonacci(9))