算法 4.6.txt

来自「《数据结构及应用算法教程》一书的源代码。作者:严蔚敏」· 文本 代码 · 共 32 行

TXT
32
字号
算法 4.6
int Ackerman ( int n,  int x,  int y ) {
  // 利用栈S求Ackerman函数的值,返回Ackerman(n, x, y)
      InitStack(S);  
      e.nval = n;  e.xval = x;  e.yval = y;  Push(S, e );    // ( n, x, y ) 进栈
      do {
          GetTop(S, e);
          while ( e.nval != 0 && e.yval != 0 ) {
            e.yval --;
            Push(S, e);                  // 新的参数值 (n, x, y-1) 进栈;
           }
          Pop(S, e);                     // 退出栈顶元素
          u = value (e.nval, e.xval, e.yval);   // 按定义计算  u = A (n, x, y );
          if ( ! StackEmpty(S) ) {
            Pop( S, e );                 // 退出栈顶元素
            e.nval --;  e . yval = e.xval;  e.xval = u;
            Push( S, e );                // 新的参数值 (n-1, u, x) 进栈
          }
       } while ( ! StackEmpty(S) ); 
       return u ;                        // 返回计算结果
} //Ackerman

int value ( int n, int x, int y ) {
  if ( n = = 0 )  return (x+1);
  else  switch ( n ) {
          case  1:  return x;
          case  2:  return 0;
          case  3:  return 1;
          default : return 2;
       }
} // value

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?