Функция Аккермана на С++
Требуется вычислить значение A(m,n) — где A это функция Аккермана.
Функция Аккермана определяется рекурсивно для неотрицательных целых чисел m и n следующим образом:
A(m,n)=n+1, при m=0
A(m,n)=A(m−1,1), при m>0, n=0
A,(m,n)=A(m−1,A(m,n−1)), при m>0, n>0
Answers & Comments
Ответ:
#include <stdio.h>
unsigned akkerman(unsigned m, unsigned n) {
return ( ! m ) ? n + 1 : ( ! n ) ? akkerman(m - 1, 1) : akkerman(m - 1, akkerman(m, n - 1));
}
int main(void) {
unsigned m, n;
while ( printf(" ") && scanf("%u%u", &m, &n) == 2 )
printf("%u\n", akkerman(m, n));
return 0;
}