📄 ackermann.cpp
字号:
#include <iostream.h>
#define MAX 200
typedef struct node{
int n,x,y;
} NODE;
NODE stack[MAX];
int top=0;
int push(NODE s[],int &top,NODE x)
{
if (top>=MAX)
return 1;
s[top]=x;
top++;
return 0;
}
int pop(NODE s[],int &top,NODE &x)
{
if (top==0)
return 1;
top--;
x=stack[top];
return 0;
}
int A(NODE node)
{
int B;
NODE tnode;
push(stack,top,node);
do{
tnode=stack[top-1];
while (tnode.n!=0 && tnode.y!=0)
{
tnode.y--;
push(stack,top,tnode);
}
pop(stack,top,tnode);
switch (tnode.n)
{
case 0:B=tnode.x+1;
break;
case 1:B=tnode.x;
break;
case 2:B=0;
break;
case 3:B=1;
break;
default:B=2;
}
if (top)
{
pop(stack,top,tnode);
tnode.n--;
tnode.y=tnode.x;
tnode.x=B;
push(stack,top,tnode);
}
}
while (top);
return B;
}
void main()
{
NODE node={3,2,5};
cout<<"A(3,2,5)="<<A(node)<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -