ورود

View Full Version : مشکل تابع اکرمن



NIMA_1981
دوشنبه 25 بهمن 1389, 22:10 عصر
سلام دوستان

من با این تابع اکرمن مشکل دارم دارم تا عدد 3 رو جواب میده اما بیتر از عدد 3 فکر کنم overflow میشه

میشه راهنمایی کنید



#include <stdio.h>
#include <stdlib.h>
unsigned int calls;
unsigned int naive_ackermann(unsigned int ,unsigned int);
unsigned int iterative_ackermann(unsigned int,unsigned int);
unsigned int formula_ackermann(unsigned int,unsigned int);

int main() {
unsigned int m, n, result;
m = 4;
n = 1;
calls = 0;
result = naive_ackermann(m, n);
printf("Naive: %u (%u calls)\n", result, calls);
calls = 0;
result = iterative_ackermann(m, n);
printf("Iterative: %u (%u calls)\n", result, calls);
calls = 0;
result = formula_ackermann(m, n);
printf("Formula: %u (%u calls)\n", result, calls);
return 0;
}
unsigned int naive_ackermann(unsigned int m, unsigned int n) {
calls++;
if (m == 0)
return n + 1;
else if (n == 0)
return naive_ackermann(m - 1, 1);
else
return naive_ackermann(m - 1, naive_ackermann(m, n - 1));
}
unsigned int iterative_ackermann(unsigned int m,unsigned int n) {
calls++;
while (m != 0) {
if (n == 0) {
n = 1;
} else {
n = iterative_ackermann(m, n - 1);
}
m--;
}
return n + 1;
}

r00tkit
دوشنبه 25 بهمن 1389, 22:28 عصر
اکرمن چیه دیگه ؟

NIMA_1981
دوشنبه 25 بهمن 1389, 22:35 عصر
http://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9_%D8%A7%DA%A9%D8%B1%D9%85% D9%86