算法 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 + -
显示快捷键?