دنیای برنامه نویسی و اپلیکیشن

baner-telegram
شما اینجا هستید : صفحه اول » آموزش برنامه نویسی » آموزش ++C » تابع بازگشتی فاکتوریل در فیلم آموزش C++ به زبان فارسی
تابع بازگشتی فاکتوریل در فیلم آموزش C++ به زبان فارسی

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

در این قسمت از فیلم آموزش c++ تابع بازگشتی فاکتوریل را آموزش داده ایم ، اول تابع بازگشتی را تعریف می کنیم و بعد کد تابع بازگشتی فاکتوریل را در سی پلاس پلاس برای شما می نویسیم . 

تابع بازگشتی ( Recursive )  :

تابع بازگشتی یعنی تابعی که خودش را فراخوانی کند ، حالا این نحوه فراخوانی به دو صورت انجام می شود : 1- مستقیم   2- غیر مستقیم  در سورس کد زیر می توانید مشاهده کنید : 

همان طور که می بینید فراخوانی مستقیم یعنی تابع را درون خودش فراخوانی کنیم و تابع بازگشتی به صورت غیر مستقیم ، تابعی مثل ()sum  تابع ()add را فراخوانی کند و تابع ()add نیز تابع ()sum را فراخوانی کند .     (  توضیحات بیش تر در فیلم آموزش تابع بازگشتی داده شده است  )

طرح کلی توابع بازگشتی به این صورت است که یک یا چند حالت خاصیت بازگشتی دارند و یک یا چند حالت هم در تابع بدون فراخوانی بازگشتی کار خود را انجان می دهند . به حالتی ( دستوراتی ) که بدون فراخوانی بازگشتی کار می کنند حالت توقف می گویند ، چون اگر تابع ، یک حالت توقف نداشته باشد آن تابع خاتمه نمی یابد . در توابع بازگشتی بیش تر با استفاده از دستور if مشخص می کنیم که کدام یکی از حالت ها باید اتفاق بیفتد . 

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

ما می دانیم که 4 فاکتوریل ، 3 فاکتوریل و … به صورت زیر هستند : 

4! = 1*2*3*4
3! = 1*2*3
2! = 1*2 
1! = 0!*1
0! = 1

برای نوشتن تابع بازگشتی فاکتوریل باید کاری کنیم تا این تابع هی خودش رو فراخوانی بکنه ، اول از مقادیر بالا می فهمیم که فاکتوریل عدد 4 به صورت زیر محاسبه می شود : 

4! = 4*3!

حالا این رابطه را به بقیه فاکنوریل ها ها می شود بسط داد که رابطه آن به صورت زیر است : 

n! = n * (n-1)!

این رابطه میگه که فاکتوریل عدد را فاکتوریل حالت قبلی ضرب می کنیم تا جواب به دست آید . ( اگه متوجه نشدید فیلم رو ببینید )

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

شاید براتون شوال باشه که چرا نوع تابع را unsigned انتخاب کردیم ؟؟؟؟؟؟؟ unsigned یه معنی بدون علامت است و یعنی فقط عدد مثبت می توانیم وارد کنیم و long هم برای این است که عدد طولانی تری را برگرداند . 

اگر به تابع fact  نگاه کنید می بینید همان طور که در بالا گفتم تابع ما دو حالت بازگشتی و غیر بازگشتی ( حالت توقف ) را دارد . ما می دانیم که فاکتوریل عدد 0 ( صفر ) برابر یک است پس اگر عددی کاربر وارد کرده مخالف صفر بود بیا اون عدد رو در حالت قبلی ( یکی کمتر ) ضرب کن و تابع را فراخوانی کن و تابعی که فراخوانی می شود دوباره این مراحل را انجام می دهد مگر اینکه صفر شود ، وقتی صفر شد یک رو بر می گردونه که جواب !0 است و آن را در 1 ضرب می کند تا جواب فاکتوریل 1 به دست بیاید و بعد جواب به دست آمده را در عدد 2 ضرب می کند تا جواب فاکتوریل 2 به دست بیاید و این پروسه ادامه پیدا می کند تا به جواب نهایی برسیم . ( توضیحات این قسمت در انتهای فیلم آموزش تابع بازگشتی فاکتوریل داده شده است )

فیلم آموزش تابع بازگشتی فاکتوربل را می توانید از لینک زیر دانلود کنید . 

پیشنهاد می کنیم حتما بخوانید :

درباره : رضا طوماری

عاشق برنامه نویسی

نظرات کاربران :



جواب سوال چیه ؟ *