آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – توابع بازگشتی یا (Recursive Function) – قسمت سوم

در این قسمت تمرینی دیگر از توابع بازگشتی مثال زده خواهد شد.
تمرین: با استفاده از توابع بازگشتی برنامه ای بنویسید که دنباله فیبیوناتچی را حساب کند.
برای حل این تمرین ابتدا نیازمند آشنایی با چند مفهوم در ریاضی می باشید.
۱- دنباله: به مجموعه ای از اعداد گفته می شود که بوسیله ی ترتیبی خاص که جمله عمومی یا (فرمول دنباله) نام دارند محاسبه می شوند، مانند دنباله اعداد اول یا دنباله اعداد فرد.
۲- دنباله بازگشتی: نوعی از دنباله هاست که برای محاسبه هرکدام از اعدادش به عدد پیشین نیازمند است.
۳- اندیس: همانطور که به یاد دارید در قسمت آرایه ها برای اشاره به خانه ی پنجم همواره داشتیم:

عدد چهار اندیس است. در ریاضی مانند آرایه ها اندیس ها اِلزاما از صفر شروع نمی شوند و کارشان همانند آرایه ها اشاره به عدد خاصی می باشد. اندیس ها را در ریاضی در زیر عدد می نویسند (مانند زیروند در شیمی). و معمولا آن را با حرف n نمایش می دهند.
…,an=1,3,5,7
در مثال بالا a یک متغیر است و n اندیس است (بخوانید a اندیس n).
حال اگر بخواهیم به عدد سوم اشاره کنیم بصورت زیر عمل می کنیم:
نکته: انتخاب اندیس به شما بستگی دارد بنابراین هم می توانید اندیس را از صفر بگیرید هم از یک که اگر از صفر بگیرید همانند آرایه ها خواهد شد.ما در این مثال ترجیحا از اندیس یک شروع میکنیم.
a3=5
بخوانید a اندیس ۳ برابر ۵ .
۳- دنباله فیبیوناتچی: به دنباله ی بازگشتی ای گفته می شود که اعداد آن از جمع دو عدد پیشین آن عدد بدست می آید.
نکته:اگر اندیس را از یک بگیرید دو اعدد اول این دنباله برابر یک است اما اگر اندیس را از صفر بگیرید دو عدد اول صفر و یک خواهند بودک
پس با توجه به نکته بالا فرمول این دنباله بصورت زیر است:
n=0 => 0,1,1,2,3,5,8,13,…,an-1 + an-2 اگر
n=1 => 1,1,2,3,5,8,13,…,an-1 + an-2 اگر
ما ترجیحا از فرمول دوم استفاده خواهیم کرد.
اگر توجه کنید عدد دو برای مثال از جمع دو عدد پیش از خود بدست آمده و یا عدد سه که از جمع عدد دو و یک بدست آمده.
اکنون این دنباله را به فرم توابع بازگشتی مینویسیم.
برای نوشتن آن به صورت توابع بازگشتی به کد زیر توجه کنید.
ابتدا تابع بازگشتی را تعریف کرده.

توجه کنید که در تابع بالا عدد صفر را نیز برای جلوگیری از اشتباه در برنامه قرار دادیم.
خب حال به فراخوانی تابع در تابع ()main می پردازیم.

اندیس ها در هیچ موردی منفی نمی شود مثلا اندیس ۱۳- معنایی ندارد بنابراین در کد بالا شرطی مبنی بر این نوشته تا از این اشتباه جلوگیری شود.
و در نهایت:

آموزش برنامه نویسی ++C – توابع بازگشتی یا (Recursive Function) – قسمت سوم

همانطور که می بینید هفتمین جمله از دنباله فیبیوناتچی برابر ۱۳ می باشد.
آموزش برنامه نویسی ++C – توابع بازگشتی یا (Recursive Function) – قسمت سوم

پاسخ دهید

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