题目:
设计一个递归函数,计算Ackerman函数的值。Ackerman函数定义如下:
代码:
#include <iostream>
#include <ctime>
using namespace std;
static int a = 0;
double A(double m, double n);
int main()
{
//计时开始
clock_t start, finish;
double totaltime;
start = clock();
int m, n;
cout << "计算Ackerman函数的值" << endl << endl;
cout << "请分别输入m和n的值:";
cin >> m >> n;
cout << endl << "Ackerman函数的值为" << A(m, n) << endl << endl;
cout << "函数一共调用了" << a << "次" << endl;
//计时结束
finish = clock();
totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
cout << "总共需要" << totaltime << "秒" << endl << endl;
system("pause");
return 0;
}
double A(double m, double n)
{
a = a + 1;
if (m == 0) return n + 1;
else if (n == 0) return A(m - 1, 1);
else return A(m - 1, A(m, n - 1));
}