● The Ackermann function
جمعه, ۳۰ فروردين ۱۳۹۲، ۰۴:۳۲ ب.ظ
تابع آکرمن
در سال ۱۹۲۰ ویلهلم آکرمن و گابریل سودن، دو ریاضیدان دانشجوی دانشگاه دیوید هیلبرت بر روی مبانی محاسبات مطالعه میکردند. سودن با تابع نه چندان معروفی که به نام خود ثبت کرد شناخته میشود.که این تابع از نوع بازگشتی چند ضابطهای بوده. مدتی بعد و به طور مستقل در سال ۱۹۲۸ اکرمن تابع بازگشتی خود که چندضابطهای بود را ارائه داد. آکرمن ثابت کرد که تابع آکرمن یک تابع بازگشتی است که یک رایانه یا پردازشگر با حافظه بیکران میتواند آن را محاسبه کند اما یک تابع بازگشتی درجه اول مانند فاکتوریل یا تابع جمع نیست.
input
1 2
output
4
ورودی:
این برنامه دو عدد m و n را به عنوان ورودی می گیرد، که هر چه کوچکتر باشند بهتر است!
خروجی:
حاصل تابع آکرمن برای دو عدد وارد شده را به عنوان خروجی چاپ کنید.
// A Drop of the Programming Sea - adops.blog.ir#include <iostream> using namespace std; int Ackermann(int, int); int main() { int m,n; cin >> m >> n; cout << Ackermann(m,n) << "\n"; return 0; } int Ackermann(int m, int n) { if(m==0) return n+1; else if(m>0 && n==0) return Ackermann(m-1,1); else if(m>0 && n>0) return Ackermann(m-1,Ackermann(m,n-1)); }