زیر برنامه های بازگشتی

زیر برنامه های بازگشتی

سلام.
مدتی بود بود که از سورس کد و مباحث برنامه نویسی دور شده بودم و امروز بالاخره طلسم شکسته شد و با مبحث زیربرنامه های بازگشتی (Recursive) به امید خدا دوباره کار این قسمت رو شروع میکنم.
اگه بخوام توضیح کوتاهی در رابطه با زیر برنامه بازگشتی بدم، زیر برنامه های بازگشتی چیزی نیستند جز برنامه هایی  که مرتبا خودشون را صدا میزنن.
بذارید یه مثال بزنم، مثلا آینه ای رو در نظر بگیرید، تو حالت عادی وقتی شما رو به روی آینه بایستید آینه  انعکاس تصویر شما رو در خودش نشون میده، اما وقتی یک آینه دیگه رو در مقابلش قرار بدید، با صحنه ای متفاوت مواجه میشید، در این حالت آینه اول بازتاب (انعکاس) آینه دوم رو نشون میده و این در حالیه که آینه دوم هم انعکاسی از آینه اوله و این انعکاس ها دائما در خودشون تکرار میشن و یک تونل مانندی رو ایجاد میکنن. در این حالت بازتاب هر تصویر به انعکاس تصویر آینه مقابل وابسته است…
بازگشتی هم یعنی همین، تو ریاضیات واضح ترین مثال فاکتوریله، فرض کنید که شما میخواید !۵ رو محاسبه کنید. میدونید که حاصل برابر با ۵×۴×۳×۲×۱ و این هم چیزی نیست جز !۴×۵ و !۴ هم به این صورت. پس میبینید که !۵ به وجود پاسخ !۴ نیاز داره و !۴ هم به جواب !۳ و همینطور الی آخر.
پس پاسخ هر جواب به جواب ما قبلش وابسته است و با فرمول زیر میتونیم !n رو محاسبه کنیم.

فاکتوریل

خوب توضحیات من دیگه ته کشید، در زیر تعدادی مسأله رو میبینید که به روش بازگشتی و غیر بازگشتی حل شدن، اینها تمرینات فصل اول کتاب ساختمان داده مقسمی اند که به زبان جاوا (JAVA) آمادشون کردم، اگه شما برای حلشون الگوریتم های بهتری داشتید خوشحال میشم که در بخش نظرات اعلام کنید تا من و بقیه دوستان بتونیم ازش استفاده کنیم.

۱- برنامه ای که مجموع عناصر یک آرایه n عنصری را توسط تابعی محاسبه و چاپ کند (بازگشتی و غیر بازگشتی).

۲- برنامه ای که یک عدد سه رقمی را گرفته و به کمک یک تابع فرعی، مجموع اعداد مثبت مضرب ۳ را که کوچکتر یا مساوی n باشند محاسبه وچاپ کند (بازگشتی و غیر بازگشتی).

۳- برنامه ای که دو عدد a وb را گرفته و به کمک توابع بازگشتی a^b و a×b را محاسبه و چاپ کند.

۴- برنامه ای که آرایه ای را خوانده و معکوس آن را چاپ کند (بازگشتی و غیر بازگشتی).

۵- برنامه ای که عدد مثبتی را گرفته و توسط تابعی، هریک از ارقام آن را از چپ به راست در یک سطر مجزا چاپ کند (بازگشتی و غیر بازگشتی).

۶- برنامه ای که جمله n ام سری فیبوناچی  را در یک تابع محاسبه و آن را در قسمت اصلی برنامه چاپ کنه (بازگشتی و غیر بازگشتی).

۷- برنامه ای که مقدار (n¦m) را به ازای ورودی m و n محاسبه کند (به روش بازگشتی).

۸- برنامه ای که به کمک تابع بازگشتی بزرگترین مقسوم علیه مشترک (gcd) دو عدد x و y را محاسبه و چاپ کند.

۹- برنامه ای که به کمک قانون هرنر (Horner) چند جمله ای دلخواهی را به ازای x_0 ورودی محاسبه کند.

۱۰- برنامه ای که به صورت بازگشتی مجموعه توانی یک مجموعه دلخواه را چاپ کند.

دیدگاه کاربران در مورد این نوشته

  1. سلام
    برای یک مجموعه n عضوی تمام ترکیب های nتایی آن را بازگشتی چاپ کند…لطفا کمکم کنید

    توسط پانیذ پاسخ

  2. سلام برنامه ای به زبان c که مجموع اعدا 1 تا 100 زا به روش بازگشتی چاپ کنه

    توسط علی پاسخ

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

      int sum(int s){
      	for(int i=1;i<=100;i++)
      	{
      		s+=i;
      	}
      	return s;
      }
      int main (){
      	int s=0;
      	cout<

      توسط امین میرزائی پاسخ

دیدگاه خود را بیان کنید