روش های مختلفی برای یافتن شماره نهم فیبوناچی در پایتون وجود دارد. اینها به شرح زیر است:
- با استفاده از بازگشت
- با استفاده از برنامه نویسی پویا
- با استفاده از برنامه نویسی پویا و بهینه سازی فضا
- با استفاده از آرایه ها
از بین این روش ها ، دو اساسی ترین روش پویا و بازگشت هستند.
بیایید نگاهی عمیق تر به نحوه عملکرد هر یک از این روشها بیندازیم.
1. با استفاده از بازگشت
بازگشت چیزی را در درون خود تعریف می کند. در پایتون ، بازگشت به فرایند عملکردی که خود را فراخوانی می کند ، اشاره دارد. با استفاده از کد صحیح ، یک حلقه محدود ایجاد می کند.
در کد زیر:
- ما می دانیم که دو شماره اول فیبوناچی 0 و 1 هستند.
- در صورت ورودی به عنوان n = 1 یا n = 2 (اعداد فیبوناچی اول یا 2) ، ما از یک عبارت if-else برای بازگشت 0 یا 1 استفاده می کنیم.
- اگر n از 2 بیشتر باشد ، عملکرد خود را با مقدار ورودی پایین تر فرا می خواند. همانطور که در کد مشاهده می کنید ، برمی گردد (Fibonacci (N-1)+Fibonacci (N-2)).
- در اینجا ، عملکرد خود را با مقدار کمتری فرا می خواند تا اینکه به مقدار پایه n = 1 و n = 2 برسد ، و همانطور که از قبل می دانیم ، n = 1 0 و n = 2 بازگشت 1.
- مقادیر برگشتی به طور مداوم اضافه می شوند تا دنباله سری فیبوناچی را تولید کنند.
def fibonacci (n):
اگر n
چاپ ("ورودی نادرست")
# شماره اول فیبوناچی 0 است
elif n == 0:
بازگشت (0)
# شماره فیبوناچی دوم 1 است
elif n == 1:
بازگشت (1)
دیگری:
بازگشت (Fibonacci (N-1)+Fibonacci (N-2))
چاپ (فیبوناچی (10))
بازگشت
2. با استفاده از برنامه نویسی پویا
برنامه نویسی پویا نیز از بازگشت استفاده می کند ، اما عمدتا از اظهارات الزر استفاده می کند. در بیانیه ها از یک متغیر برای ذخیره مقدار شماره فیبوناچی استفاده می شود. این شماره فیبوناچی با افزودنی مکرر که با استفاده از بازگشت به دست می آید بدست می آید. در برنامه داده شده ، متغیر ذخیره سازی "X" نامگذاری شده است.
در کد زیر:
- ما با یک آرایه یک بعدی شروع می کنیم. Fibarray با عناصر 0 و 1 در شاخص های 0 و 1 خود 0 و 1 است.
- سپس ، اگر ورودی داده شده ('n') کمتر یا مساوی با 2 باشد (یعنی طول آرایه fibarray) ، 0 را به عنوان شماره اول (1 نفر) و 1 به عنوان شماره دوم باز می گرداند (n =2)
- اگر n از 2 بیشتر باشد ، ما از بازگشت برای تماس و اضافه کردن 2 عنصر قبلی (مشابه کد اول) استفاده می کنیم.
- با این حال ، در اینجا ، به جای بازگشت مستقیم شماره فیبوناچی نهم ، ما هر یک از عناصر خلاصه را به آرایه فیبری اضافه می کنیم. سرانجام ، آخرین عنصر آرایه (عنصر نهم) را برمی گردانیم.
def fibonacci (n):
# گرفتن دو نفر از دو فیبوناچی به عنوان 0 و 1
fibarray = [0 ، 1]
# در اینجا ، از آنجا که ما می دانیم که 2 عدد فیبوناچی اول 0 و 1 است ، ما مقادیر باقیمانده (اعداد فیبوناچی را از فهرست 2 تا n) در آرایه با استفاده از بازگشت و بازگشت عنصر آخر اضافه می کنیم.
# در عملکرد دامنه ، ما به جای دامنه (2 ، N+1) دامنه (2 ، N+1) را در نظر می گیریم. این امر به این دلیل است که عملکرد دامنه در پایتون تکرار می شود تا مقدار قبل از حد بالایی. بنابراین ، اگر از 2 به N استفاده کنیم ، فقط از عنصر 2 تا (N-1) تکرار می شود.
برای من در محدوده (2 ، n+1):
Fibarray. Append (Fibarray [I-1] + Fibarray [I-2])
بازگشت Fibarray [n]
چاپ (فیبوناچی (10))
برنامه نویسی پویا
3. با استفاده از برنامه نویسی پویا و بهینه سازی فضا
این روش تقریباً کاملاً مشابه برنامه نویسی پویا است. با این حال ، برنامه نویسی پویا از بازگشت برای دستیابی به علاوه بر مکرر استفاده می کند ، در حالی که این روش از "برای حلقه" استفاده می کند.
در کد زیر:
- ما 2 متغیر از پیش تعیین شده A = 0 و B = 1 را می گیریم-آنها عناصر 1 و 2 سری هستند.
- سپس ، ما 0 را برای مقدار ورودی n = 1 و 1 برای مقدار ورودی n = 2 با استفاده از عبارات if-else باز می گردانیم. اگر n از 2 بیشتر باشد ، ما یک حلقه "برای" I را در محدوده (2 ، n) می گیریم. این تابع دامنه به این معنی است که حلقه با مقدار 2 شروع می شود و تا مقدار N-1 تکرار می شود.
- در اینجا ، ما یک متغیر ذخیره سازی c را می گیریم. این متغیر برای ذخیره مجموع دو عنصر قبلی در این سری استفاده می شود.
- این سریال را کاملاً به معنای واقعی کلمه در دنباله A ، B و C در نظر بگیرید. هنگامی که C مقدار A+B را گرفت ، مقدار A به B اختصاص داده می شود. پس از آن ، مقدار B به مقدار C واگذار می شود. به عبارت ساده تر ، بعد از C تبدیل به A+B ، A = B و B = C می شود.
- این فرآیند ادامه می یابد و ارزش 3 تا زمانی که حلقه خاتمه یابد ، مجدداً انتصاب می شود.
- پس از خاتمه حلقه ، عملکرد مقدار B را برمی گرداند ، که مقدار شماره فیبریاچی نهم را ذخیره می کند.
# مشابه به عنوان مثال قبلی ، ما 2 عدد فیبوناچی اول را به عنوان 0 و 1 می گیریم.
def fibonacci (n):
a = 0
b = 1
اگر n<0:
چاپ ("ورودی نادرست")
elif n == 0:
بازگشت a
elif n == 1:
بازگشت b
# در مثال قبلی ، از "بازگشت" برای ایجاد یک حلقه محدود استفاده شد. بر فراز او ، ما برای به دست آوردن سری فیبوناچی از حلقه ای برای حلقه استفاده می کنیم.
دیگری:
برای من در محدوده (2 ، n+1):
ج = a + b
a = b
b = c
بازگشت b
چاپ (فیبوناچی (10))
برنامه نویسی پویا و بهینه سازی فضا
4. استفاده از آرایه ها
در این روش ، آرایه ای از اندازه n با افزودن مکرر با استفاده از حلقه برای ایجاد می شود. سپس ، عنصر نهم بازگردانده می شود.
در کد زیر:
- ما با ایجاد یک آرایه ای از اندازه n+1 شروع می کنیم - این به این دلیل است که وقتی می گوییم شماره فیبرچی نهم ، از 1 شروع می کنیم. اما ، شاخص یک آرایه از 0 شروع می شود. از این رو ، ما فضای اضافی می دهیم زیرا شماره فیبرچی نهم دارای مقدار شاخص N+1 خواهد بود.
- در ایجاد آرایه ، تمام مقادیر به طور پیش فرض 0 هستند. از این رو ، شماره 1 (فهرست 0) را ترک می کنیم و شماره 2 (فهرست 1) را به مقدار 1 تغییر می دهیم.
- اکنون ، ما یک حلقه را با متغیر I در محدوده (2 ، n+1) می گیریم. همانطور که در کد قبلی توضیح داده شد ، حلقه با مقدار i = 2 شروع می شود و با مقدار i = n پایان می یابد.
- بعد ، در حلقه ، مقدار هر عنصر آرایه را اختصاص می دهیم. مقدار عنصر I-Th برابر با مجموع دو عنصر قبلی در آن آرایه است.
- همانطور که حلقه تکرار می شود ، هر مقدار از آرایه پر می شود.
- سرانجام ، پس از خاتمه حلقه ، مقدار با شاخص N-1 بازگردانده می شود.
همانطور که قبلاً توضیح داده شد ، مقدار شاخص آرایه از 0 شروع می شود ، اما ما از 1 شروع می کنیم. از این رو ، وقتی می گوییم "شماره فیبوناچی نهم" یا "عنصر نهم آرایه" ، این عنصر دارای مقدار شاخص N-1 است. بنابراین ، ما عنصر شاخص N-1 را به جای عنصر شاخص N برمی گردانیم.
تجارت با گزینههای باینری...
ما را در سایت تجارت با گزینههای باینری دنبال می کنید
برچسب :
نویسنده : حمیدرضا پگاه
بازدید : 74
تاريخ : پنجشنبه
5 مرداد
1402 ساعت: 0:40