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

دسته‌ها : آموزش, توسعه, جاوا, زبان های برنامه نویسی, سورس کدهای آماده علی میرزائی 31 دیدگاه‌ها

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

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

فاکتوریل

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

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

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

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

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

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

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

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

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

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

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

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

  1. سلام کسی میتونه این سوال رو به من جواب بده ،لطفا
    برنامه ای بنویسید که با استفاده از تابع بازگشتی دنباله اعداد زیر را چاپ نماید
    2 , 5 , 11 , 23 , …

    توسط اکرم پاسخ

  2. یک تابع که تعداد ارقام یه عدد رو به صورت بازگشتی بده.
    میشه بگید چه جوری میشه

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

  3. سلام میتونم آدرس ایمیلتون رو داشته باشم؟

    توسط آذر پاسخ

  4. سلام من 10/20امتحان ساختمان داده دارم ولی اصلا بلد نیستم مثلا همون سوال تابع بازگشتی و غیر بازگشتی فاکتوریل یه چیزی مثل مرتبه زمانی هم اونوقت چطوری بدست میاد؟ اگه جواب بدین ممنون میشم

    توسط مرضیه بناغ پاسخ

  5. مثال آینه از پهنا تو حلقم
    داشتم واسه آموزش به یکی دنبال مثال خوب میگشتم…
    سپاس فراوان…
    موفق باشی..

    توسط xhdix پاسخ

    1. خواهش میکنم xhdix عزیز… اگه بازم مثال خواستی بیا پیش خودم :)

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

  6. برادر با این نرم افزارهایی که شما گفتید نتونستیم بازش کنیم حالا چی میشد کل برنامه رو در یک صفحه نوشتاری می نوشتی ملت رو سرکار نمی زاشتی، تو که کار خوب انجام دادی چرا بهترش نکردی؟
    موفق باشی در هر صورت

    توسط حمیدی پاسخ

    1. اینم از اون حرفا بوداااا!!! 😐 دوست عزیزم، من این نوشته رو برای معرفی و دانلود یک نرم افزار منتشر نکردم! بلکه، هدفم ارائه چند سورس کد برنامه نویسی ساده بود که برای دانشجوهای کامپیوتر و IT یک نمونه ی کامل کمک درسی باشه! اینکه شما نمیتونید از این کدها استفاده کنید، به این معنی نیست که من ملت رو سرکار گذاشتم…

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

  7. متشکرم برادر

    توسط حمیدی پاسخ

  8. ببخشید ما یکم کم سواد تشریف داریم فایلها رو دانلود کردم پسوندش جاوا نوشته میشه بگید با چه نرم افزاری باز میشه؟مخم دیگه داره سوت می کشه

    توسط حمیدی پاسخ

    1. سلام، برای اجرای برنامه ها (سورس کدها) جاوا میتونید از eclipse و یا NetBeans IDE استفاده کنید.

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

  9. سلام علی آقا میشه سورس کد ضرب چند جمله ای ها و مجموعه توانی رو الان واسم بنویسی خیلی لازم دارم لطفا

    توسط shirin پاسخ

    1. سلام، احتمالا به لیست برنامه های پیوست شده دقت نکردید!!! (هر دو این برنامه رو میتونید در همین پست دانلود کنید)

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

  10. لطفا جواب بدید

    توسط shirin پاسخ

  11. سلام شما کتاب طراحی الگوریتم آقای علی خانزاده رو دارید؟

    توسط shirin پاسخ

    1. سلام، نه این کتاب رو ندارم. چطور مگه؟

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

  12. سلام
    ضمن تشکر از سایت خوبتون یه خواهش ازتون داشتم
    یه سوال دارم هرچه گشتم چیزی شبیه این پیدا نکردم
    فاکتوریل تابع main ، تابع بازگشتی و تابع غیر بازگشتی را بنویسید و در تابع اصلی فراخوانی کنید.
    ممنون میشم با توضیحات راهنماییم کنیم

    توسط alizadeh پاسخ

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

      public int Factorial(int n)
      {
      	if (n == 0)
      		return 1;
      	else
      		return n * Factorial(n-1);
      }
      

      تابع غیر بازگشتی:

      int factorial ( int input )
      {
        int x, fact = 1;
        for ( x = input; x > 1; x--)
           fact *= x;
      
        return fact;
      
      }
      

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

  13. سلام.
    ای کاش میگفتید که باید با چه نرم افزاری این رو اجرا کنیم؟

    توسط پدرام پاسخ

    1. سلام، برنامه ها به زبان جاوا نوشته شدن و شما میتونید اونها رو در محیط هایی مثل eclipse یا netbeans اجرا کنید.

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

  14. خیلی خوب توضیح دادین.واقعا ممنونم من که خوب یاد گرفتم.همین جلسه ی پیش استادمون این درس و داد

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

    1. خوشحالم از اینکه تونستم کمکی کرده باشم. {گل}

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

  15. سلام
    میشه کد برنامه ای که عضو های یک مجموعه رو میگیره و زیرمجموعه را چاپ می کنید رو بگید بگذارید!!

    توسط محمد پاسخ

    1. سلام.
      یعنی عکس عمل برنامه شماره 10 (مجموعه توانی) رو انجام بده؟!؟!؟

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

  16. ضمن تشکر :
    لطفا مطالب مربوط به برنامه نویسی رو بیشتر کنید وقتی آدم برنامه نویسی اش خوب شه همه ی چیزایی که کد دارن قابل فهم ترن!مخصوصا اگه outputخوبی داشته باشن مثل کارای گرافیکی و …

    توسط محسن پاسخ

    1. سلام.
      متشکرم از دیدگاهتون.
      خیلی دوست دارم که رو مطالب برنامه نویسی تمرکز بیشتری داشته باشم اما واقعیتش اینه که این مباحث معمولا وقت و زمان زیادی رو میطلبن و چون من هم دست تنهام یه مقدار تو این قضیه محدودیت دارم.
      با اینحال برنامه هایی هم دارم که ایشالا سعی میکنم به زودی اجراییشون کنم. 😉

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

  17. مفید بود
    اگر امکانش هست یه آموزشی هم برا کارهای گرافیکی بذارید

    توسط Mahdi پاسخ

    1. ممنون، اتفاقا برنامشو دارم…
      اگه ایشالا وقت بهم اجازه بده به زودی آموزش های گرافیکی هم در سایت قرار میدم.

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

  18. با تشکر از سایت خوبتون
    ولی کاش اینارو دو ترم پیش میذاشتید که من تو ساختمون داده…
    لطفا مباحث برنامه نویسی رو بیشتر کنید

    توسط Solmaz پاسخ

    1. سلام، متشکرم، لطف دارید.
      متأسفانه دو ترم پیش اثری از این سایت نبود :)
      ولی چشم، حتما در آینده به مطالب برنامه نویسی بیشتر میپردازم…

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

  19. آقا علی میشه لطفا بگید دانشجوی کدوم دانشگاه هستید و ترم چندین ؟

    توسط حامد پاسخ

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