در این مقاله به بررسی مفهوم تابع بازگشتی در پایتون میپردازیم و مثالهای مربوط به آن را بررسی میکنیم. همچنین نحوه استفاده از تابع بازگشتی در پایتون برای بدست آوردن فاکتوریل اعداد مختلف را یاد میگیریم.
تابع در واقع دستورات و کدهایی است که تحت عنوان یک عملکرد قرار دارد.
مثال:
def name():
print(“salam”)
name()
Output:
salam
کد بالا یک تابع ساده است که ما آن را به عنوان name نامگذاری کردیم. این تابع عبارت salama را پرینت میکند. بعد از نوشتن کدهای مربوط به تابع، آن را صدا میزنیم و در نهایت عبارت salam در صفحه ترمینال نمایش داده خواهدشد.
مطلب مرتبط: توابع در پایتون
تابعهای بازگشتی، انواعی از توابع هستند که خودشان را درون تابع صدا میکنند.
مثال:
def name():
print(“salam”)
name()
name()
Output:
salam
salam
salam
salam
….
RecursionErrror: maximum recursion depth exceeded
کد بالا مثالی از تابع بازگشتی در پایتون است. وظیفه این تابع، پرینت کردن عبارت salam است. بعد از انجام عملیات پرینت، یک بار دیگر همان تابع (name) صدا زده میشود. در نتیجه، عبارت salam تا زمانی که خطای RecursionError رخ نداده باشد پرینت میشود.
مطلب مرتبط: آموزش جذر گرفتن در پایتون
حالا که با مفهوم تابع بازگشتی در پایتون آشنا شدیم، میتوانیم یک مثال کاربردی را با هم بررسی کنیم. در این بخش، نحوه نوشتن کد مربوط به انجام عملیات فاکتوریل با استفاده از زبان برنامه نویسی پایتون را بررسی میکنیم.
فاکتوریل در ریاضی، حاصل ضرب یک عدد صحیح در تمامی اعداد صحیح مثبت نزولی از آن عدد تا یک است. مثلاَ فاکتوریل 4 حاصل ضرب اعداد 4، 3، 2 و 1 است. که برابر با 24 میباشد.
ما میتوانیم با استفاده از تابع بازگشتی در پایتون، کد مربوط به انجام عملیات ریاضی فاکتوریل را بنویسیم. در این بخش نحوه استفاده از توابع بازگشتی برای بدست آوردن فاکتوریل یک عدد مشخص را بررسی میکنیم.
def rf(x):
if x == 0 or x ==1:
return 1
else:
return x * rf(x-1)
print(rf(x))
کد بالا مربوط به انجام عملیات فاکتوریل با استفاده از تابع بازگشتی در پایتون میباشد. ابتدا تابع را تعریف کردیم و نام آن را rf قرار دادیم. تابع rf یک ورودی تحت عنوان x، دریافت میکند و عملیات فاکتوریل را طبق این ورودی انجام میدهد. بعد از تعریف تابع، از دستور if برای جلوگیری از رخ دادن خطاهای احتمالی استفاده کردیم.
اگر x برابر با 0 یا 1 باشد، تابع عدد 1 را به عنوان خروجی تحویل میدهد.
if x == 0 or x == 1
return 1
اگر x برابر با یک یا صفر نبود، عدد x در x-1 ضرب میشود
else :
return x * rf(x-1)
در این بخش، تابع rf یک بار دیگر صدا زده میشود و این کار، rf را به یک تابع بازگشتی تبدیل میکند. این عملیات تا زمانی که x برابر با 1 یا صفر باشد انجام میشود. در آخر با استفاده از دستور پرینت و صدا زدن تابع rf، میتوانیم از عملیات فاکتوریل با استفاده از تابع بازگشتی در پایتون استفاده کنیم.
مثال:
def rf(x):
if x == 0 or x ==1:
return 1
else:
return x * rf(x-1)
print(rf(5))
Output :
120
در این بخش با استفاده از کد rf، فاکتوریل عدد 5 را محاسبه کردیم. تابع rf با ورودی 5، منجر به اجرای زنجیرهای از محاسبات عددی میشود.
rf(5) مقدار rf(4) * 5 را برمیگرداند.
rf(4) مقدار rf(3) * 4 را برمیگرداند.
rf(3) مقدار rf(2) * 3 را برمیگرداند.
rf(2) مقدار rf(1) * 2 را برمیگرداند.
rf(1) مقدار 1 را برمیگرداند.
بعد از بازگشت عدد 1، x برابر با 1 میشود که این شرط، زنجیره عملیات ریاضی را متوقف میکند. نتایج بازگشتی به این صورت محاسبه میشود.
2 = 1*2
6 = 2*3
24 = 6*4
120 = 24 * 5
در نهایت، تابع rf، خروجی 120 را پرینت میکند و این عدد همان فاکتوریل 5 است.
استفاده از بازگشت در این تابع، محاسبات را به صورت تکراری انجام میدهد تا به جواب نهایی برسد. بازگشت باعث ساده تر شدن کد میشود، اما میتواند مصرف حافظه را افزایش دهد. وجود شرط پایه برای جلوگیری از بازگشت بینهایت ضروری است. در تابع rf، شرط پایه به درستی تعریف شده است تا در صورت رسیدن به 0 یا 1، بازگشت متوقف شود.
برای اعداد بزرگتر، تعداد زیادی بازگشت صورت میگیرد که ممکن است باعث مصرف بالای حافظه شود. به همین دلیل، در موارد عملی میتوان از روشهای بهینه تر مانند محاسبه فاکتوریل بدون استفاده از توابع بازگشتی استفاده کرد.
جمع بندی
در این مقاله با توابع بازگشتی در پایتون آشنا شدیم و نحوه بدست آوردن فاکتوریل اعداد را یاد گرفتیم. تابع rf که در این مقاله مورد بررسی قرار گرفت، یک مثال ساده از چگونگی استفاد از تابع بازگشتی در پایتون برای حل مسائل محاسباتی است. این تابع با استفاده از مفاهیم پایه بازگشت، توانست فاکتوریل اعداد را به سادگی محاسبه کند.
با این حال، در موارد کاربردی تر و برای اعداد بزرگتر، ممکن است نیاز به بهینهسازی و استفاده از روشهای پیچیدهتری باشد تا کارایی بهتری حاصل شود. کودکان و نوجوانان میتوانند با شرکت در دوره برنامه نویسی کودکان پل استار به صورت اصولی مباحث مختلف برنامه نویسی را بیاموزند و بتوانند آمادگی حضور در بازار کار و پروژههای سطح بالا را داشته باشند. پس حتما این دوره موسسه پل استار را تهیه کرده تا فرزند دلبندتان از این فرصت استثنایی بهرهمند شود.