#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

01-09 20:17