دنباله فیبوناچی با پایتون
تاریخ بروزرسانی : 22 آبان 1401 | تعداد بازدید : 303 | زمان خواندن مقاله : 10

کمتر از 10 دقیقه به دنباله فیبوناچی در پایتون مسلط شو

کمتر از 10 دقیقه به دنباله فیبوناچی در پایتون مسلط شو

لئوناردو پیزانو فیبوناچی، یکی از سرشناس ترین نظریه پردازان ایتالیایی است. فیبوناچی جهان را با مفاهیم ریاضی گسترده ای مانند سیستم شمارش گذاری عربی، ریشه های مربع اعداد و ترتیب اعداد آشنا کرده است. اگر به این فکر می کنید که اسم فیبوناچی آشنا به نظر می رسد؛ باید بگوییم درست فکر می کنید. مبحث دنباله فیبوناچی در کتاب ریاضی دبیرستان از مهم ترین دستاورد های این بزرگوار است. در ادامه نیز می خواهیم درباره دنباله فیبوناچی در پایتون بگوییم تا کاربرد آن را در برنامه نویسی نیز متوجه شوید.

 قبل از آن که به سراغ کاربرد فیبوناچی در پایتون برویم؛ بهتر است نیم نگاهی به زندگی او بندازیم. لئوناردو پیزانو فیبوناچی، از ریاضیدان و نظریه پردازان به نام در دنیا است. اگر جایی نام لئوناردو پیزا را شنیدید؛ بدانید که منظور همان فیبوناچی خودمان است.

وی در سال 1170 در پیزا ایتالیا چشم به جهان گشود. لئوناردو تحصیلات خود را در شمال آفریقا و در الجزایر گذراند. او کتاب های بسیاری را نوشته است و خدمات گسترده ای را به علم ریاضی و حساب ارائه داده است. از افتخار آفرینی او می توان به تقدیر جمهوری پیزا به دلیل مشاوره به شهر و شهروندانش در مورد مسائل حسابداری اشاره کرد.

بیوگرافی فیبوناچی عزیز را با یک نقل قول از خودش به پایان می رسانیم و به سراغ دنباله فیبوناچی در پایتون می رویم. این نقل قول نیز بدین شرح است: « اگر اتفاقی چیزی را که مهم و ضروری بوده، کم و زیاد گفته ام، عذرخواهی می کنم، زیرا کسی نیست که در همه امور بی تقصیر و محتاط باشد» 

فیبوناچی در پایتون چیست؟ 

اعداد فیبوناچی اعداد موجود در دنباله اعداد صحیح زیر هستند.

0، 1، 1، 2، 3، 5، 8، 13، 21، 34، 55، 89، 144، ……..

 

در اصطلاح ریاضی، دنباله Fn اعداد فیبوناچی با رابطه عود تعریف می شود. اگر بخواهیم ساده ترین روش ممکن را برای توضیح این دنباله استفاده کنیم باید بگوییم؛ در این دنباله عدد بعدی حاصل جمع دو عدد قبلی خود می باشد. باری دیگر به دنباله ای که در بالا آمده است نگاه کنید. متوجه می شوید که هر عدد از جمع دو عدد قبلی اش به دست آمده است. تعریف ریاضی آن نیز به صورت زیر می باشد. 

Fn =( Fn-1) + (Fn-2)

 

البته یک قانون ثابت دیگر نیز برای دنباله فیوناچی وجود دارد. در این قانون اولین عدد دنباله همیشه صفر است و دومین عدد نیز همیشه یک است. 

F0 = 0  و F1 = 1

 

قسمتی از دنباله اعداد را در ادامه آورده ایم تا این مبحث را بهتر متوجه شوید.قسمتی از دنباله اعداد را در ادامه آورده ایم تا این مبحث را بهتر متوجه شوید.قسمتی از دنباله اعداد را در ادامه آورده ایم تا این مبحث را بهتر متوجه شوید.

0
1
1=0+1
2=1+1
3=1+2
5=2+3
8=3+5

 

اگر ستون اعداد سمت چپ را از بالا به پایین نگاه کنید، می بینید که دنباله فیبوناچی را به دست آورده ایم. بقیه اعداد دنباله را نیز با همین روش به دست می آوریم. وقت آن رسیده دستانتان را بفشاریم و تبریک بگوییم. چرا که تا اینجای کار توانسته اید دنباله فیبوناچی را به طور کامل یاد بگیرید. 
لیست طولانی تر از دنباله فیبوناچی را در ادامه آورده ایم. 

 

پیشنهاد ویژه: آموزش پایتون به صورت کاملا رایگان با حرفه ای ترین تدریس😍

 

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
 144, 233, 377, 610, 987, 1597, 2584, 4181,
 6765, 10946, 17711, 28657, 46368, 75025,
121393, 196418, 317811, ...

 

سورس کد دنباله فیبوناچی در پایتون

دنباله فیبوناچی در پایتون نیز طبق قوائد خاصی نوشته می شود. در ادامه با ذکر چندیدن مثال کاربرد این دنباله را در برنامه نویسی پایتون نشان می دهیم. 

مثال 1: برنامه ای برای نمایش دنباله فیبوناچی تا جمله n اٌم

# Function for nth Fibonacci number
nterms = int(input("How many terms? "))
# first two terms
n1, n2 = 0, 1
count = 0
# check if the number of terms is valid
if nterms <= 0:
   print("Please enter a positive integer")
# if there is only one term, return n1
elif nterms == 1:
   print("Fibonacci sequence upto",nterms,":")
   print(n1)
# generate fibonacci sequence
else:
   print("Fibonacci sequence:")
   while count < nterms:
       print(n1)
       nth = n1 + n2
       # update values
       n1 = n2
       n2 = nth
       count += 1

 خروجي اين قطعه کد نيز به شرح زير است:

How many terms? 7
Fibonacci sequence:
0
1
1
2
3
5
8

 

در اين مثال؛ تعداد عبارت ها را در nterms ذخيره مي کنيم. به صورت پيش فرض مقدار جمله اول را صفر و جمله دوم را يک مي گذاريم. اگر تعداد عبارت ها بيشتر از 2 باشد، از حلقه while استفاده مي کنيم تا با جمع دو عبارت قبلي، عبارت بعدي را در دنباله پيدا کنيم. سپس متغيرها را تغيير مي دهيم وبه محاسبات ادامه مي دهيم.
مثال 2:  در اين مثال دنباله فيبوناچي در پايتون را با روش بازگشتي حل کرده ايم. در اين روش بايد با استفاده از عبارت شرطي if و بررسي مقدار هاي اوليه به حل دنباله بپردازيم و جمله nاٌم را بيابيم.

# Function for nth Fibonacci number
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
    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(12))

در اين مثال خروجي را به ازاي مقدار 12 مورد بررسي قرار داده ايم. به عبارتي ديگر با اين قطعه کد توانسته ايم مقدار جمله 12اٌم دنباله فيبوناچي در پايتون را به دست آوريم. 
خروجي کد نيز به صورت زير مي باشد:

14

مثال3: در اين مثال به دست آوردن دنباله فيبوناچي در پايتون با استفاده از برنامه نويسي پويا مي آموزيم. با استفاده از اين دستور برنامه نويسي مي توان جمله nاٌم تابع فيبوناچي را با استفاده از برنامه نويسي پويا به دست آورد. هدف از استفاده اين روش جلوگيري از تکرار مجاسباتي است. کارکرد اين روش نيز به اين صورت است که نتيجه عمليات و محاسبات در يک ليست ذخيره مي شود و در صورت نياز به ليست مراجعه مي کنيم. طبق قانون تابع فيبوناچي، جمله اول را صفر و جمله دوم را یک در نظر مي گيريم. 

# number - Dynamic Programming
FibArray = [0, 1]
def fibonacci(n):
    # Check is n is less
    if n < 0:
        print("Incorrect input")
    # Check is n is less
      elif n < len(FibArray):
        return FibArray[n]
    else:       
        FibArray.append(fibonacci(n - 1) + fibonacci(n - 2))
        return FibArray[n]
# Driver Program
print(fibonacci(12))

خروجي اين قطعه کد نيز به شرح زير است:

144

 

اين مثال نيز جمله دوازدهم دنباله فيبوناچي در پايتون را نشان مي دهد. 

مثال 4: در اين مثال به دنبال nاٌمين جمله از دنباله فيبوناچي هستيم و اين کار را با استفاده از روش بهينه سازي فضا انجام مي دهيم. اين روش بهينه ترين روش براي محاسبه است. در اين مثال نيز مطابق با مثال هايي که حل کرديم؛ دو عدد اول دنباله را به ترتيب صفر و 1 در نظر مي گيريم.

 

پیشنهاد ویژه: اگر قصد دارید تسلط بیشتری در برنامه نویسی پایتون داشته باشید، دوره حل تمرین پایتون را مشاهده کنید، این دوره کاملا رایگان می باشد😍

 

# number - Space Optimisation
def fibonacci(n):
    a = 0
    b = 1
    # Check is n is less
    if n < 0:
        print("Incorrect input")
    # Check is n is equal
    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(12))

اين مثال نيز جمله دوازدهم دنباله فيبوناچي را جستجو مي کند. پس مانند مثال هاي قبل يک جواب دارد که به صورت زير مي باشد:

144

 

همانطور که متوجه شديد همه اين مثال ها يک چيز را از ما مي خواستند و در نهايت همگي يک عدد را نمايش دادند. شما هر عددي از دنباله فيبوناچي را که بخواهيد مي توانيد با يکي از اين سه روش به دست آوريد. 

خلاصه اي از دنباله فيبوناچي در پايتون 

در اين مقاله ابتدا با سرگذشت آقاي فيبوناچي آشنا شديم و در ادامه دنباله فيبوناچي در پايتون را به طور کامل توضيح داديم و به بررسي سورس کدهاي آن با سه روش بازگشتي، پويا، بهينه سازي فضا پرداختيم. اين دنباله يکي از ساده ترين مباحث در برنامه نويسي پايتون و در رياضيات است. انتخاب هر کدام از اين الگوريتم ها نيز برعهده شما است. چرا که بسته به نيازتان مي توانيد يک روش را انتخاب کنيد. اميدوارم از اين مقاله استفاده کنيد. بي صبرانه منتظر نظرات پر مهرتان هستم.