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

نام تاپیک: سوال در مورد تابع بازگشتی

  1. #1

    Post سوال در مورد تابع بازگشتی

    سلام دوستان من تابع زیر رو دستی trace کردم برای مقدار f(50) و جواب 151 رو بدست آوردم ولی تو سیستم که میزنم میگه جواب 101. کسی میدونه کجای کارم ایراد داره؟
    int f(int a)
    }
    if (a==1) return 1;
    else
    return a+f(a-=10)

    1618437576422.jpg





  2. #2

    نقل قول: سوال در مورد تابع بازگشتی

    نقل قول نوشته شده توسط paria92 مشاهده تاپیک
    سلام دوستان من تابع زیر رو دستی trace کردم برای مقدار f(50) و جواب 151 رو بدست آوردم ولی تو سیستم که میزنم میگه جواب 101. کسی میدونه کجای کارم ایراد داره؟
    int f(int a)
    }
    if (a==1) return 1;
    else
    return a+f(a-=10)

    1618437576422.jpg




    اشکال کار اینجا است که شرط if (a==1) در f(a -= 10) و سایر ورودی ها برقرار نیست، شما برای func(0) مقدار 1 رو بدست آورده اید، اما 10 - 10 که 1 نمیشه، 0 میشه.
    شرط if (a==1) برای a = 0 که برقرار نیست.
    پس f(0) میشه هم f(0) = 0 + f(-10) و f(-10) میشه f(-10) = -10 + f(-20) و ... اونقدر ادامه میده تا در حافظه پشته سر ریزی رخ بده.

    اگر از f(50) شروع می کنید شرط درست باید if (a==0) باشه، نه if (a==1)
    اگر از f(51) شروع می کنید همون شرط if (a==1) مناسبه.

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: چهارشنبه 21 اسفند 1398, 20:19 عصر
  2. پاسخ: 2
    آخرین پست: یک شنبه 07 شهریور 1395, 11:06 صبح
  3. پاسخ: 1
    آخرین پست: دوشنبه 28 مرداد 1392, 11:59 صبح
  4. سوال: سوالاتی پیرامون بانک های اطلاعاتی !!!
    نوشته شده توسط ATULICUS در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: شنبه 05 مرداد 1392, 15:46 عصر
  5. حرفه ای: دانلود سورس تابلوی تبلیغاتی Led و سورس office 2007
    نوشته شده توسط farboodj1375 در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: شنبه 28 خرداد 1390, 11:12 صبح

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

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