📄 算法 4.6.txt
字号:
算法 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -