ورود

View Full Version : تعداد تکرار تابع بازگشتی



arira110
شنبه 11 آذر 1391, 22:37 عصر
کسی از دوستان میتونه کمک کنه تعداد دغعات تکرار این تابع بازگشتی رو محاسبه کنم





public static double binomial(int N, int k, double p)
{
if ((N == 0) || (k < 0)) return 1.0;
return (1.0 - p)*binomial(N-1, k) + p*binomial(N-1, k-1);
}




مثلا برای (binomial(100, 50 چطوری میشه محاسبه کرد ؟

ارمین نصیری
شنبه 11 آذر 1391, 23:21 عصر
فرمول کلی فکر کنم به صورت زیر اگر کوچک تر از n باشه

n+(k+2)+1
در غیر اینصورت
n*2+2

arira110
یک شنبه 12 آذر 1391, 00:30 صبح
فرمول کلی فکر کنم به صورت زیر اگر کوچک تر از n باشه

n+(k+2)+1
در غیر اینصورت
n*2+2

ممنون از جواب ولی هیچکدوم اینا نیست باید به صورت زیر باشه جواب ها
اینا تعداد تکرار تابع بازگشتی هستن به ازای ورودی هایی که میبینین




(1,0)=3
(1,1)=3
(2,0)=5
(2,1)=7
(2,2)=7
(3,0)=7
(3,1)=13
(3,2)=15
(3,3)=15
(4,0)=9
(4,1)=21
(4,2)=29
(4,3)=31
(4,4)=31
(5,0)=11
(5,1)=31
(5,2)=51
(5,3)=61
(5,4)=63
(5,5)=63


دیوونه ام کرده هر فرمولی رو تست کردم بازم پیدا نکردم

arira110
پنج شنبه 16 آذر 1391, 15:17 عصر
من این مساله رو از کتاب "Algorithms-4th -RobertSedgewick- KevinWayne" پیدا کردم
چند روز قبل به یکی از نویسندگان کتاب ایمیل زدم وازش جواب رو پرسیدم و اونم جوابمو اینطوری داد


Hint: calculate the number of calls for some small values of N and k and consider functions that involve N! (N factorial) and k! (k factorial).

هنوزم نتونستم فرمول رو پیدا کنم
کسی نظری داره؟