PDA

View Full Version : محاسبه توابع بازگشتی



hercool
جمعه 15 خرداد 1388, 16:46 عصر
با سلام خدمت دوستان سوالی را که در عکس قرار دادم جوابش 10 میشه ولی من در مورد راه حلش سوال دارم
ایا در اول ما باید مقدار داده شده را در n جایگذاری کنیم سپس بعد از عمل منها فاکتوریل هر کدام را گرفته بعد از هم کم کنیم درسته؟
این روش در همه توایع به یکسان انجام می شود یا خیر در هر مسئله ای راه حلش فرق میکنه ؟


(http://tehransar.ir/pics8/dfa7bd5bf0b207dceab6c0ac96db2ecb.jpg)http://tehransar.ir/pics8/dfa7bd5bf0b207dceab6c0ac96db2ecb.jpg (http://tehransar.ir/pics8/dfa7bd5bf0b207dceab6c0ac96db2ecb.jpg)
http://tehransar.ir/pics8/dfa7bd5bf0b207dceab6c0ac96db2ecb.jpg

vcldeveloper
جمعه 15 خرداد 1388, 19:21 عصر
کامپایلر برای اجرای این تابع برگشتی با مقدار ورودی 3 اینطوری عمل میکنه:


f(3) = f(2) + f(1)
f(2) = f(1) + f(0)
f(1) = f(0) + f(-1)
f(0) = 2
f(-1) = 2

با جایگزاری مقادیر بدست آمده از هر بار اجرای f به این نتیجه میرسه:


f(1) = 2 + 2 = 4
f(2) = 4 + 2 = 6
f(3) = 6 + 4 = 10

hercool
جمعه 15 خرداد 1388, 19:48 عصر
با روشی که گفتم نمیشه و ایا ایجاد خطا میکنه یا خیر ؟
منظور اول 3 را منهای 2 و یک در هر کدام از قسمت ها کرده فاکتوریل انها را بدست اورده سپس از هم کم کند؟

vcldeveloper
جمعه 15 خرداد 1388, 21:06 عصر
این یک تابع یک تابع بازگشتی هست، ولی چه ربطی به فاکتوریل داره؟!

hercool
شنبه 16 خرداد 1388, 07:35 صبح
یه سوال این قسمت رو از کجا اوردید

f(0) = 2
f(-1) = 2

بعدش اگر میشه یک عدد دیگه ای هم انتخاب کنید و مثال بزنید و اون n-1 و n-2 چه تاثیری داشتند؟

vcldeveloper
شنبه 16 خرداد 1388, 08:54 صبح
یه سوال این قسمت رو از کجا اوردید
از اینجا:


if n<=0 then
f := 2

تاثیر n-1 و n-2 هم در پست قبلی مشخص هست، وقتی گفته میشه


f(3) = f(2) + f(1)

یعنی اگر n = 3 باشد:


f(n) = f(n-1) + f(n-2)
f(3) = f(3-1) + f(3-2) => f(3) = f(2) + f(1)