C++ 关于阿克曼函数的伪非递归算法 编个C++程序 不用递归怎么做?写出程序

先看一下标准阿克曼函数的实现
akm(m, n) = n + 1; (m = 0时)
akm(m, n) = akm(m - 1, 1); (n = 0时)
akm(m, n) = akm(m - 1, akm(m, n - 1)); (m != 0且n != 0时)
用堆栈的方法编写代码代替编译器和CPU执行递归。可以算是伪非递归吧

非递归可以用自底向上bottom-up动态规划的方法,递归属于自顶向下,与之正好相反:
int Ackermann(int m,int n)
  {
  int akm[m][n];
  int i,j;
  memset(akm,o,sizeof(akm));
  for(j=0;j<n;j++)
  akm[0][j]=j+1;
  for(i=1;i<m;i++)
  {
  akm[0]=akm[i-1][1];
   for(j=1;j<n;j++)
  {
  akm[j]=akm[i-1][akm[j-1]];
   }
  }
  return akm[m][n];
  }
堆栈的也对百科上也有追问

大哥 百度上关于这个都基本都看了 包括你给的这个网址 我就想问一句你这个能运行吗? 麻烦把完整程序写出来 看看能否运行再说

参考资料:http://baike.baidu.com/view/672302.htm

温馨提示:答案为网友推荐,仅供参考
相似回答