تابع بازگشتی در ++C — راهنمای جامع (+ دانلود فیلم آموزش گام به گام)

۵۶۱۳ بازدید
آخرین به‌روزرسانی: ۱۲ مهر ۱۴۰۲
زمان مطالعه: ۱۸ دقیقه
تابع بازگشتی در ++C — راهنمای جامع (+ دانلود فیلم آموزش گام به گام)

در این نوشته با روش ایجاد یک تابع بازگشتی در ++C آشنا می‌شویم. تابع بازگشتی تابعی است که خودش را فرامی‌خواند. چنین فرایندی به طور کلی «بازگشت» (recursion) نامیده می‌شود. برای مطالعه بخش قبلی این سری مقالات به لینک زیر رجوع کنید:

فیلم آموزشی تابع بازگشتی در ++C

دانلود ویدیو

طرز کار بازگشت در ++C چگونه است؟

1void recurse()
2{
3    ... .. ...
4    recurse();
5    ... .. ...
6}
7
8int main()
9{
10    ... .. ...
11    recurse();
12    ... .. ...
13}

شکل زیر طرز کار بازگشت را از طریق فراخوانی خودش به صورت مکرر نمایش می‌دهد.

تابع بازگشتی در ++C

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

برای جلوگیری از بازگشت نامتناهی از گزاره‌های if…else یا رویکردی مشابه استفاده می‌شود که در آن یک شاخه از گزاره مربوطه موجب بازگشت و شاخه دیگر باعث توقف فرایند بازگشتی می‌شود.

مثال 1

محاسبه فاکتوریل عدد با استفاده از بازگشت

1// Factorial of n = 1*2*3*...*n
2#include <iostream>
3using namespace std;
4int factorial(int);
5int main() 
6{
7    int n;
8    cout<<"Enter a number to find factorial: ";
9    cin >> n;
10    cout << "Factorial of " << n <<" = " << factorial(n);
11    return 0;
12}
13int factorial(int n) 
14{
15    if (n > 1) 
16    {
17        return n*factorial(n-1);
18    }
19    else 
20    {
21        return 1;
22    }
23}

خروجی

Enter a number to find factorial: 4
Factorial of 4 = 24

در شکل زیر طرز کار مثال فوق را توضیح داده‌ایم:

تابع بازگشتی در ++C

فرض کنید که عدد 4 از سوی کاربر برنامه وارد شده است. این مقدار به تابع ()factorial ارسال می‌شود.

  • در نخستین تابع ()factorial، عبارت تست درون گزاره if صحیح است. گزاره ;(return num*factorial(num-1 اجرا می‌شود که تابع ()factorial دوم را فرامی‌خواند و آرگومان ارسالی num-1 است که مقدار 3 را دارد.
  • در تابع ()factorial دوم، عبارت تست درون گزاره if صحیح است. گزاره ;(return num*factorial(num-1 اجرا می‌شود که تابع ()factorial سوم را فرامی‌خواند و آرگومان ارسالی num-1 است که مقدار 2 دارد.
  • در تابع ()factorial سوم، عبارت تست درون گزاره if همچنان صحیح است. بنابراین گزاره ;(return num*factorial(num-1 اجرا می‌شود که تابع ()factorial چهارم را فرا می‌خواند و آرگومان ارسالی num-1 و مقدار آن 1 است.
  • در تابع ()factorial چهارم، عبارت تست درون گزاره if ناصحیح است. از این رو گزاره ;return 1 اجرا می‌شود که مقدار 1 را به تابع ()factorial سوم بازمی‌گرداند.
  • تابع ()factorial سوم مقدار 2 را به تابع ()factorial دوم بازگشت می‌دهد.
  • تابع ()factorial دوم مقدار 6 را به تابع ()factorial اول بازگشت می‌دهد.
  • در نهایت تابع ()factorial اول مقدار 24 را به تابع ()mian بازگشت می‌دهد که این مقدار روی صفحه نمایش می‌یابد.

برای مطالعه بخش بعدی این سری مطالب به لینک زیر رجوع کنید:

اگر این مطلب برای شما مفید بوده است، آموزش های زیر نیز به شما پیشنهاد می شوند:

==

بر اساس رای ۲۷ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
programiz
۲ دیدگاه برای «تابع بازگشتی در ++C — راهنمای جامع (+ دانلود فیلم آموزش گام به گام)»

سلام خیلی ممنون از توضیحاتتون …

سلام

خیلی مفید بود.

ممنون.

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *