سلام دوستان من تابع زیر رو دستی trace کردم برای مقدار f(50) و جواب 151 رو بدست آوردم ولی تو سیستم که میزنم میگه جواب 101. کسی میدونه کجای کارم ایراد داره؟
سلام دوستان من تابع زیر رو دستی trace کردم برای مقدار f(50) و جواب 151 رو بدست آوردم ولی تو سیستم که میزنم میگه جواب 101. کسی میدونه کجای کارم ایراد داره؟
اشکال کار اینجا است که شرط 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) مناسبه.