请C++高手帮助一道编程题。
已知Ackerman函数定义如下:akm(m,n)=n+1当m=0时。akm(m,n)=akm(m-1,1)当m!=0,n=0时。akm(m,n)=akm(m-1,akm...
已知Ackerman函数定义如下:
akm(m,n)=n+1 当m=0时。
akm(m,n)=akm(m-1,1) 当m!=0,n=0时。
akm(m,n)=akm(m-1,akm(m,n-1)) 当m!=0,n!=0时。
利用栈,写出它的非递归求解算法。
要完整的程序,急!!! 展开
akm(m,n)=n+1 当m=0时。
akm(m,n)=akm(m-1,1) 当m!=0,n=0时。
akm(m,n)=akm(m-1,akm(m,n-1)) 当m!=0,n!=0时。
利用栈,写出它的非递归求解算法。
要完整的程序,急!!! 展开
2个回答
展开全部
总是得1,理论上正常的,因为递归把m,n都减到了0,然后输出了n+1,就是1
#include "iostream.h"
int akm(int m,int n);
int main()
{
int a,b;
cin>>a>>b;
cout<<akm(a,b);
}
int akm(int m,int n)
{
if(m==0)
return n+1;
else
{
if(n==0)
return akm(m-1,n);
else
return akm(m,n-1);
}
}
#include "iostream.h"
int akm(int m,int n);
int main()
{
int a,b;
cin>>a>>b;
cout<<akm(a,b);
}
int akm(int m,int n)
{
if(m==0)
return n+1;
else
{
if(n==0)
return akm(m-1,n);
else
return akm(m,n-1);
}
}
追问
额。。。是用栈,而且是非递归。。。写
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询