词条 | 阿克曼函数 |
释义 | § 概述 Ackermann函数定义如下: 【 n+1 if m=0 akm(m,n)=-【 ack(m-1,1) if m<>0 n=0 【 akm(m-1,akm(m,n-1)) if m<>0 n<>0 计算Ack(m,n)的非递归算法有 § 法一: int Ackerman(int m.int n) { in akm【m】【n】; int i,j; memset(akm,o,sizeof(akm)); for(j=0;j<n;j++) akm【0】【j】=j+1; for(i=1;i<m;i++) { akm【0】=akm【i-1】【1】; for(j=1;j<n;j++) { akm【j】=akm【i-1】【akm【j-1】】; } } return akm【m】【n】; } § 法二: stack s; int ack(int m,int n) { int top=0; s【top】.mval=m; s【top】.nval=n; do { while(s【top】.mval) { while(s【top】.nval) { top++; s【top】.mval= s【top-1】.mval; s【top】.nval= s【top-1】.nval-1; } s【top】.mval--; s【top】.nval=1; } if(top>0) { top--; s【top】.mval--; s【top】.nval= s【top+1】.nval++; } }while(top!=0|| s【top】.mval!=0); ack= s【top】.nval+1; top--; } |
随便看 |
百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。