آموزش پاسکال

توابع بازگشتی در پاسکال

توابع بازگشتی در پاسکال

همانند پروسیجر ها شما میتوانید یک تابع را از درون لوک همان تابع فراخوانی کنید
تابع که خودش را فراخوانی کند تابع بازگشتی (Recursive) گفته می شود
شاید این پرسش به ذهن شما خطور کند که چه نیازی به استفاده از توابع بازگشتی وجود دارد
پاسخ این است که بعضی از مسائل با استفاده از توابع بازگشتی بسیار آسان حل خواهند شد
برای مثال در ریاضیات مساله فاکتوریل یک عدد به این صورت محاسبه می گردد
که عدد مورد نظر در اعدادقبل از خود ضرب خواهد شد
برای مثال فاکتوریل عدد 5 به صورت زیر محاسبه می شود

5*4*3*2*1

نتیجه برابر با 120 خواهد وبد
توجه داشته باشید که فاکتوریل 1 برابر با 1 خواهد بودبرای مثال در برنامه زیر از تابع برگشتی برای حل مسئله فاکتوریل استفاده شده است

Function Factorial ( A : Integer ) : Longint;
begin
 if a<=1
  then Factorial  := 1
  else Factorial  := A*Factorial (A-1);
end;

begin
 WriteLn (Factorial (5));
end.

با اجرای این برنامه عدد 120 نمایش داده خواهد شد
مطمئنا تعجب کرده اید الگوریتم این برنامه بسیار ساده است
در صورتی که شرط کوچکتر یا مساوی بودن متغییر A با عدد 1 بر قرار باشد
نتیجه تابع عدد 1 خواهد بود در غیر این صورت عدد مورد نظر باید در عدد پیش از خود ضرب شود
توجه داشته باشید که شرط خاتمه عملیات بازگشتی بسیار با اهمیت است
به این دلیل که اگر به این دلیل که اگر شرط خاتمه وجود نداشته باشد
فرواخوانی متعدد موجب پرشدن حافظه Stack خواهد شد
و این مسئله باعث خاتمه یافتن غیر عادی برنامه میگردد

[adinserter block="1"]
5/5 - (2 امتیاز)

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

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

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