PDA

View Full Version : مزایا و معایب توابع بازگشتی



quiet_programmer
یک شنبه 28 فروردین 1390, 16:07 عصر
با سلام

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

یا یه جور دیگه بپرسم:

به نظر شما توابع یا روالهایی که به صورت بازگشتی پیاده سازی میشن چه مزایا و معایبی نسبت به پیاده سازی غیر بازگشتی معادل دارن؟

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

Mamadex
یک شنبه 28 فروردین 1390, 20:17 عصر
اغلب توابعی که می توان آنها را بصورت بازگشتی نوشت, خود دارای زمان اجرای بیشتری می شوند. هرچند که به لحاظ علمی دارای پیچیدگی زمانی (زمان اجرا) یکسانی هستند. این مقدار بع علت سربار اضافی است.
بهترین نمونه توابع بازگشتی در الگوریتم Quick sort است که پیاده سازی آن در روش معمولی دشوار است. سایر الگوریتم ها مثل جستجو دودویی در هر دو حالت به یک شکل عمل می کند و داری زمان یکسان اند ولی لازم است که مولفه های بیشتری را وارد کار کنیم مثلا علاوه بر طول شئ, مقادیر چپ و راست نیز نیاز است.
توابع بازگشتی بعلت اینکه مدام فراخوانی می شوند و باعث می شوند که سربار های جدید با متغیر های کپی ایجاد شوند, ممکن است پشته را پر کنند و این ممکن است باعث بشود که داده هایی از دست برود.
گاهی اجرای یک تابع بازگشتی برای جستجو در یک شاخه بصرفه تر از جستجوی معمولی است. از این نوع توابع در بحث های پیچیده تر مانند هوش مصنوعی استفاده های بهتری می شود. و اینکه اغلب باعث می شود کد را کوتاه, بهینه و برای بعضی ها خوانا تر کند.
یک صفحه مفید برای مطالعه بیشتر اینجا (http://fa.wikipedia.org/wiki/%D8%AA%D9%88%D8%A7%D8%A8%D8%B9_%D8%A8%D8%A7%D8%B2% DA%AF%D8%B4%D8%AA%DB%8C) وجود دارد.

quiet_programmer
سه شنبه 30 فروردین 1390, 11:23 صبح
دوستان بی صبرانه منتظر نظرات شما در مورد معایب و مزایا توایعی که به صورت بازگشتی نوشته میشن هستم

Salar Ashgi
سه شنبه 30 فروردین 1390, 20:05 عصر
قبلا این موضوع چند بار بررسی شده ، حتما جستجو کنید .

موفق باشید ./

Ahmad_Hoghooghi
پنج شنبه 02 مهر 1394, 18:06 عصر
قبلا این موضوع چند بار بررسی شده ، حتما جستجو کنید .

موفق باشید ./

میشه از اون بررسی ها چند تا لینک بدید؟

Sepide7667
پنج شنبه 19 آذر 1394, 14:37 عصر
خواهش میکنم میشه بزارید

Sepide7667
پنج شنبه 19 آذر 1394, 14:42 عصر
خواهش میکنم میشه بزارید