请输入您要查询的百科知识:

 

词条 阿克曼函数
释义

§ 概述

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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/11 12:02:44