#include<iostream> using namespace std; int a[200][200]; int main() { int n, m; for (int i = 0; i <= 200; i++) { a[0][i] = i + 1; } for (int j = 1; j <= 200; j++)//m>0 { a[j][0] = a[j - 1][1]; for (int i = 1; i <= 200; i++) { a[j][i] = a[j - 1][a[j][i - 1]]; } } while (cin >> m >> n && (n != 0 || m != 0)) { cout << a[m][n] << endl; } return 0; }
Ackermann函数的非递归求值
描述
已知Ackermann函数定义如下:
写出计算Ack(m,n)的非递归算法。
输入
多组数据,每组数据有一行,为两个整数m和n。当m和n都等于0时,输入结束。
输出
每组数据输出一行,为Ack(m,n)。
错误:
一开始开100太小了,1000太大了。。。开200