جاوا

جلسه ۵۱: چه موقع باید از بازگشت استفاده کرد در جاوا

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

موارد زیر را بیان خواهیم کرد:

  • در صورت مناسب بودن استفاده کنید
  • مسائلی که به تعداد نامشخصی از حلقه های تو در تو نیاز دارند

تا به حال فکر کرده اید که چرا امروزه برخی زبان های برنامه نویسی مانند Haskell ، Scala ، JavaScript و … خیلی کاربرد دارند؟ دلیل این امر این است که این زبانها بر اساس برنامه نویسی تابعی (Functional Programming) بنا شده اند ، به این معنی که سیستم حول مفهوم بازگشت ساخته شده است. امروزه تمامی زبان ها مبتنی بر بازگشت هستند. جالب است؟

به طور کلی ، تقریباً هر مسئله ای که با یک کد غیر بازگشتی قابل حل باشد ، با بازگشت نیز حل می شود. در حقیقت ، اکثر مسائلی که با کد غیر بازگشتی قابل حل نیستند ، با بازگشت حل می شوند. با این وجود این بدان معنا نیست که شما همیشه باید از راه حل بازگشتی برای حل مسائل استفاده کنید. این دقیقاً همان چیزی است که ما در این جلسه بحث خواهیم کرد.

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

اینها برخی از نشانه های مهم در مسائل هستند که به شما کمک می کند تعیین کنید که آیا باید به صورت بازگشتی مسئله را حل کنید یا خیر.

در صورت مناسب بودن استفاده کنید

بازگشت باید در جاهایی استفاده شود که احساس می کنید مناسب است یا طبیعی است. به احتمال زیاد در مواردی با مسائلی روبرو خواهید شد که نمی توانید آنها را با یک راه حل تکراری حل کنید و این همان جایی است که بازگشت برای آن خیلی مناسب است.

مسئله به زیر مسئله های مشابه کوچکتر تقسیم می شود

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

مسائلی که به تعداد نامشخصی از حلقه های تو در تو نیاز دارند

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

به عنوان مثال ، پیمایش یک گراف یا درخت ، پیدا کردن تمام جایگشت های یک دنباله و غیره.

اگر حل آن به روش بازگشتی آسان تر از روش تکراری باشد

به طور خلاصه در یک جمله: بهتر است از روشی استفاده کنید که حل مسئله را آسان تر کند. ما می دانیم که با استفاده از هر دو روش می توان اکثر مسائل را حل کرد ، اما انتخاب شما باید گزینه ای باشد که برایتان آسان تر است.

اکنون که یک ایده ای کلی در مورد زمان استفاده از الگوریتم بازگشتی برای حل مسائل داریم ، در جلسه بعدی سرفصل های این مجموعه آموزشی در زمینه الگوریتم های بازگشتی را مرور می کنیم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا