?? 算法 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 + -