تابع بازگشتی در برنامه نویسی پایتون

4 سال پیش
1.1/5 - (67 امتیاز)

تابع بازگشتی در برنامه نویسی پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، ایجاد یک تابع بازگشتی در برنامه نویسی پایتون (recursive function) (تابعی که خود را فراخوانی می کند) خواهید آموخت.

بازگشت چیست؟

بازگشت (Recursion) روند تعریف چیزی از نظر خودش است.

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

پیشنهاد ویژه : پکیج آموزش پروژه محور پایتون

تابع بازگشتی در  پایتون

در پایتون که یک تابع می تواند توابع دیگر را فراخوانی کند. حتی ممکن است این تابع خود را فراخوانی کند. این نوع سازه ها به عنوان توابع بازگشتی نامیده می شوند.

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

 

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

فاکتوریل یک عدد حاصلضرب تمام اعداد صحیح از 1 به آن عدد است. به عنوان مثال ، فاکتوریل 6 (با !6 نشان داده می شود) ۷۲۰=۶*۵*۴*۳*۲*۱ است.

 

مثالی از یک تابع بازگشتی در پایتون

 

خروجی

 

در مثال بالا،() factorial یک تابع بازگشتی است که خود آن را فراخوانی می کند.

وقتی این تابع را با یک عدد صحیح مثبت فراخوانی می کنیم،  ضمن کاهش عدد به صورت بازگشتی فراخوانی می شود.

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

 

در عکس زیر روند گام به گام آنچه را که اتفاق می افتد را نشان می دهد:

بازگشت هنگامی پایان می یابد که تعداد به 1 کاهش یابد. به این شرط پایه می گویند.

هر تابع بازگشتی باید یک شرط پایه داشته باشد که بازگشت را متوقف کند وگرنه این تابع خود را بی نهایت فراخوانی می کند.

مفسر پایتون برای جلوگیری از بازگشت های بی نهایت و در نتیجه سرریز شدن پشته (stack overflow)، عمق بازگشت را محدود می کند.

به طور پیش فرض، حداکثر عمق بازگشت 1000 است. اگر از این حد عبور کنید ، منجر به RecursionError می شود. بیایید به یکی از این شرایط نگاهی بیاندازیم.

 

 

خروجی

مزایای تابع بازگشتی در پایتون

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

 

معایب تابع بازگشتی در پایتون

  • بعضی اوقات به سختی می توان منطق پشت تابع بازگشتی را فهمید.
  • فراخوانی بازگشتی پرهزینه (ناکارآمد) هستند زیرا حافظه و زمان زیادی را اشغال می کنند.
  • دیباگ کردن یا عیب یابی از توابع بازگشتی سخت است.

منبع.

لیست جلسات قبل آموزش برنامه نویسی پایتون

  1. آموزش نصب و اجرای برنامه نویسی پایتون
  2. کلیدواژه ها و شناسه های برنامه نویسی پایتون
  3. دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
  4. متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون 
  5. انواع داده ها در برنامه نویسی پایتون
  6. تبدیل نوع در برنامه نویسی پایتون
  7. ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
  8. عملگرها در برنامه نویسی پایتون
  9. نام و دامنه در برنامه نویسی پایتون
  10. دستور شرطی if…else در برنامه نویسی پایتون
  11. حلقه for در برنامه نویسی پایتون
  12. حلقه while در برنامه نویسی پایتون
  13. دستورات break و continue در برنامه نویسی پایتون
  14. دستور pass در برنامه نویسی پایتون
  15. توابع در برنامه نویسی پایتون
  16. آرگومان تابع در برنامه نویسی پایتون
1.1/5 - (67 امتیاز)
0
برچسب ها :
نویسنده مطلب saber

دیدگاه شما

بدون دیدگاه