阿克曼函数的反Ackermann函数
这是一个简单的递归
#include
int ackermann(int m, int n);
int main()
{
int m,n,result;
cout<<"Input:"<<endl;
cin>>m;
cin>>n;
result = ackermann(m,n);
cout<<result<<endl;
return 0;
}
int ackermann(int m, int n)
{
if (m == 0) return n+1;
if (n == 0) return ackermann(m-1, 1);
return ackermann(m-1, ackermann(m, n-1));
}
如果想提高效率,参见http://baike.baidu.com/view/2463172.htm?fr=ala0_1
var
a:array[0..1000,0..1000]of longint;
m,n,i,j:longint;
begin
readln(m,n);
for i:=0 to 1000 do
a[0,i]:=i+1;
for i:=1 to 100 do
begin
a[i,0]:=a[i-1,1];
for j:=1 to 100 do
a[i,j]:=a[i-1,a[i,j-1]];
end;
writeln(a[m,n]);
end.
单变量反Ackermann函数(简称反Ackermann函数)α(x)定义为最大的整数m使得Ackermann(m,m)≤x。从上面的讨论中可以看到,因为Ackermann函数的增长很快,所以其反函数α(x)的增长是非常慢的,对所有在实际问题中有意义的x,α(x)≤4,所以在算法时间复杂度分析等问题中,可以把α(x)看成常数。
α(x)出现在使用了按秩合并和路径压缩的并查集算法的时间复杂度中。
别齿香连: Ackermann函数定义如下: 若m=0,返回n+1. 若m>0且n=0,返回Ackermann(m-1,1). 若m>0且n>0,返回Ackermann(m-1,Ackermann(m,n-1)).
宁远县19778998692: C++ 关于阿克曼函数的伪非递归算法 编个C++程序 不用递归怎么做?写出程序 - ?
别齿香连: 我觉得你的想法是对的 2那里之所以没有直接m1[cp]=0应该是为了逻辑思考上的方便 实际也是等于0啊 3那里这个程序的 算法好像不大正常 代入akm[1,1]算出来代码是不正确的 等于2 实际上应该等于3 啊 所以按照你的想法改应该是正确的 我想这应该不是官方的代码吧= =恕我愚钝 着实没觉得代码正确
宁远县19778998692: 利用递归法求阿克曼函数 - ?
别齿香连: 这里给出C语言的阿克曼递归函数:首先,阿克曼函数标准定义:#include #include int Ackmann(int n,int m) { if(m==0)return n+1; else if(m>0 && n==0)return Ackmann(m-1,1); else return Ackmann(m-1,Ackmann(m,n-1)); }int main() { int m,n; printf("输入m和n:"); scanf("%d,%d",&m,&n); printf("结果是:%d",Ackmann(n,m)); system("pause"); return 0; }
宁远县19778998692: 离散数学 -- 阿克曼函数 - ?
别齿香连: 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...
宁远县19778998692: Ackermanns - function是什么意思 - ?
别齿香连: Ackermann function[词典][计] 阿克曼函数;[例句]Estimation for the constrain of the actual parameter of Ackermann function in recursive invocationACKERMANN函数递归计算中实参的约束范围估计
宁远县19778998692: 特别行政区立法会提出修改基本法的议案,以下哪项并不是必经程序?A....?
别齿香连: 楼主如果要加300分,可能要开2贴了,因为1贴最多只能200分,追加最多只能50分.你给的那个解法,写的本来就有问题.不信,你自己试试这个程序:#include<stdio.h>//非递归解法 int akm_nonrecursive(int m, int n) { int m1[50], n1[50], cp; ...
宁远县19778998692: 定义阿克曼递归函数: - ?
别齿香连: int acm(int m,int n){if(m=0 && n>=0)return n+1;else if(n=0 && m>=1) return acm(m-1,1);else if(n>0 && m>0) return acm(m-1, acm(m,n-1));else return -1;//error }void main(){int i,j,k;i=acm(5,3);j=acm(4,2);k=acm(5,5);printf("%d,%d,%d\n",i,j,k); }
宁远县19778998692: 递归函数的计算 - ?
别齿香连: 数论函数的一种,其定义域与值域都是自然数集,只是由于构作函数方法的不同而有别于其他的函数.处处有定义的函数叫做全函数,未必处处有定义的函数叫做部分函数.最简单又最基本的函数有三个:零函数O(x)=0(其值恒为0);射影函数;...