تابع بازگشتی در ++C — راهنمای جامع (+ دانلود فیلم آموزش گام به گام)
در این نوشته با روش ایجاد یک تابع بازگشتی در ++C آشنا میشویم. تابع بازگشتی تابعی است که خودش را فرامیخواند. چنین فرایندی به طور کلی «بازگشت» (recursion) نامیده میشود. برای مطالعه بخش قبلی این سری مقالات به لینک زیر رجوع کنید:
فیلم آموزشی تابع بازگشتی در ++C
طرز کار بازگشت در ++C چگونه است؟
1void recurse()
2{
3 ... .. ...
4 recurse();
5 ... .. ...
6}
7
8int main()
9{
10 ... .. ...
11 recurse();
12 ... .. ...
13}
شکل زیر طرز کار بازگشت را از طریق فراخوانی خودش به صورت مکرر نمایش میدهد.
فرایند بازگشت تا زمانی که نوعی شرط برقرار شود تداوم مییابد.
برای جلوگیری از بازگشت نامتناهی از گزارههای 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
در شکل زیر طرز کار مثال فوق را توضیح دادهایم:
فرض کنید که عدد 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 بازگشت میدهد که این مقدار روی صفحه نمایش مییابد.
برای مطالعه بخش بعدی این سری مطالب به لینک زیر رجوع کنید:
اگر این مطلب برای شما مفید بوده است، آموزش های زیر نیز به شما پیشنهاد می شوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش پیشرفته C++ (شی گرایی در سی پلاس پلاس)
- مجموعه آموزشهای دروس علوم و مهندسی کامپیوتر
- آموزش ++C — راهنمای شروع یادگیری
- اشتراک گذاری کد بین اندروید و iOS با ++C — از صفر تا صد
- برنامه نویسی شی گرا در C++ — آموزش رایگان، به زبان ساده و جامع
==
سلام خیلی ممنون از توضیحاتتون …
سلام
خیلی مفید بود.
ممنون.