نمایش نتایج 1 تا 4 از 4

نام تاپیک: ساختمان داده

  1. #1

    ساختمان داده

    در مورد حل رابطه بازگشتی توضیح دهید؟

    مثلا رابطه بازگشتی زیر چگونه حل می شود


    T(n) =T(n/2 +5)+n

  2. #2
    کاربر دائمی آواتار cherchil_hra
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    تهران
    پست
    162

    Lightbulb نقل قول: ساختمان داده

    تابع بازگشتی باید دو تا خاصیت داشته باشه:

    1. خودش را صدا بزنه
    2. یک شرط جهت اتمام فراخوانی ها

    البته ممکن هست که دو تا زیر برنامه، همدیگر رو صدا بزنند. مثلا a در داخل خودش b رو صدا بزنه و b هم در داخل خودش a رو.

    T(n) =T(n/2 +5)+n
    اما تابع شما اینجوری حل میشه:

    n=5, t(5)=t(5/2+5)+5
    n=7.5, t(7.5)=t(7.5/2+5)+7.5
    ...


    قسمت اول با مقدار n=5 شروع می کنیم (یا عددی که می خوایم). تابع t در داخل خودش، خودش را صدا می زنه. پس حالا برای اینکه مقدار t(5) رو حساب کنیم باید t(7.5) رو حساب کنیم ...

    مثال متداول حل فاکتوریل هست:


    function fact (int n)
    {
    if n<1 then fact=1
    else fact= n*fact(n-1)
    }


    مثلا برای n=4 داریم:


    fact(4)=4 * fact(4-1)
    fact(3)=3 * fact(3-1)
    fact(2)=2 * fact(2-1)
    شرط بر قرار میشه
    fact(1)=1



    حالا مقدار یک در تابع قبلی گذاشته میشه و الی آخر :

    fact(2)=2 * 1
    fact(3)=3 * 2
    fact(4)=4 * 6=24



  3. #3

    نقل قول: ساختمان داده

    مثلا رابطه بازگشتی زیر چگونه حل می شود
    فصل آخر کتاب طراحی الگوریتمها ترجمه جعفرنژادقمی به تفصیل روش حلش رو یاد داده... خوب بخون مطمئن باش هیچ مشکلی دیگه نخواهی داشت

  4. #4

    نقل قول: ساختمان داده

    سلام دوست عزیز
    برای حل توابع بازگشتی دو روش را بهت پیش نهاد می کنم.
    1-اگر جواب هر مرحله به مرحله قبلی مربوط می باشد باید آن را به صورت فرم درختی رسم کرد تا به جواب نهایی برسیم
    2-در غیر این صورت به صورت خط به خط و مرحله به مرحله جلو ببریم.
    T(n) =T(n/2 +5)+n
    این جور مثال ها به صورت درختی حل میشه.


    (4)T
    |
    |
    |
    4+(5+2)T
    |
    |
    |
    4+(5+(1)T

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

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •