برگزیده های پرشین تولز

مشكل در رابطه با اجراي تابع ackerman در C++

fonix light

Registered User
تاریخ عضویت
19 دسامبر 2009
نوشته‌ها
404
لایک‌ها
4
سن
33
محل سکونت
in your mind
آقا من دانشجوي رشته ي كامپيوترم . مي خوام تابع ackerman رو تو C++ اجرا كنم و زمان محاسبه رو براي اعداد مختلف اندازه بگيرم . البته اين كارو تا m=3 و n=10 به راحتي انجام مي دم . ولي اعداد بعدي مثل m=4 و n=2 رو نمي تونم محاسبه كنم . وقتي برنامه رو با اين اعداد اجرا مي كنم ، برنامه بسته مي شه . ( چه turbo C++ و چه visual C++ . فرقي نمي كنه . هر دوشون بعد از اجراي برنامه به طور كلي بسته مي شن . )
از استادم سئوال كردم . گفت مربوط به محافظي مي شه كه تو ويندوز كار گذاشته شده و نمي ذاره از رم بيش از حد استفاده بشه . از يه طرف استاد هم گفته بايد برنامه رو تا شنبه براي اعداد 4و2 اجرا كنيم و زمان رو اندازه بگيريم .
هر كي مي دونه چه جوري مي شه اين محافظ رو برداشت يا روشي بلده كه مي شه تابع رو براي اعداد بالا محاسبه كرد ، لطفا تو اين تاپيك بنويسه . مر30.:):):)
اين هم كد تابع ackerman :
//C++
int ackerman(int m, int n)
{
if (m == 0) return(n+1);
else if (n == 0) return(ackerman(m-1,1));
;(((;else return(ackerman(m-1,ackerman(m,n-1
}​
 
Last edited:

NdR

Registered User
تاریخ عضویت
10 مارس 2004
نوشته‌ها
86
لایک‌ها
0
این تابع بازگشتیه، در نتیجه برای (ackermann(4, 2 تعداد فراخوانی ها اونقدر بالا میره که stack پر میشه و برنامه بسته میشه. در ضمن مقدار (ackermann(4, 2 عدد بزرگی میشه. یعنی: (19728^10)×2
اینجا و اینجا رو ببینید.​
 
Last edited:
بالا