برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Speed Racer برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
هر متدی که از توی خودش ، خودش را فراخونی کنه ، به متد بازگشتی معروف هه .
متد Method3 ، در داخل بدنه و در خط آخرش ، مجددا خودش را فراخونی کرد . پس این متد ، متد بازگشتی هست .
کاربرد متدهای بازگشتی ، معمولا در حل مسائلی که بصورت درخت هستند ، کاربرد داره . مثلا فرض کنید یه شی TreeView دارید :
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
و میخواید اطلاعات همه ی بخش ها و گره هاش را بخونید و جستجو کنید . در صورتی که هر گره اش ، شامل زیر گره های متفاوتی هست (البته من هنوز چندان با شی درخت کار نکردم) .
به عبارتی ، در عملیاتی که نمیدونم تا کجا ادامه داره (اما شرط گذاشتن در درون بدنه ی این توابع ، مهمه که در فیلم هم اشاره شد وگرنه تابع ، بسیار زیاد اجرا میشه و ارور stack overflow میده) ، میشه از توابع بازگشتی استفاده کرد .
البته استفاده از توابع بازگشتی ، از لحاظ منابع سخت افزاری ، مناسب نیست و توصیه نمیشه . چون همونطور که اشاره شد ، هر بار تابعی که فراخونی میشه (چه یک تابع دیگه باشه یا اینکه از درون خود همون تابع بازگشتی، همون تابعِ خودش را مجددا فراخونی کنه) ، حافظه ی جدیدی براش در نظر گرفته میشه و همچنین سوئیچ بین تابع ها ، برای پردازنده ، میتونه سربار هم داشته باشه .
کلا تابع بازگشتی (مخصوصا اگه زیاد فراخونی بشه) ، منابع سخت افزاری از جمله رم و پردازنده را درگیر میکنه . بجای استفاده از تابع بازگشتی ، استفاده از حلقه ی while توصیه میشه (اگه امکانش باشه . البته در جاهایی ممکنه امکان استفاده از حلقه ی while بجای توابع بازگشتی ، نباشه) .






پاسخ با نقل قول


Bookmarks