阿克曼函数java代码 阿克曼函数tree3

关于阿克曼函数的非递归算法 满意加300 C语言高手求解 在线等楼主如果要加300分 , 可能要开2贴了 , 因为1贴最多只能200分 , 追加最多只能50分 。
你给的那个解法,写的本来就有问题 。
不信,你自己试试这个程序:
#includestdio.h
//非递归解法
int akm_nonrecursive(int m, int n)
{
int m1[50], n1[50], cp;
cp = 0;
m1[0] = m;
n1[0] = n;
do {
while (m1[cp]0) { /* 压栈, 直到m1[cp] = 0 */
while (n1[cp]0) { /* 压栈, 直到n1[cp] = 0 */
cp++;
m1[cp] = m1[cp - 1];
n1[cp] = n1[cp - 1] - 1;
}
/* 计算akm(m - 1, 1),当n = 0时 */
m1[cp] = m1[cp] - 1;
n1[cp] = 1;
}
/* 改栈顶为akm(m - 1, n + 1),当m = 0时 */
cp--;
m1[cp] = m1[cp] - 1;
n1[cp] = n1[cp + 1] + 1;
} while (cp0 || m1[cp]0);
return n1[0] + 1;
}
int main()
{
printf("%d\n",akm_nonrecursive(0,2));
printf("%d\n",akm_nonrecursive(2,0));
printf("%d\n",akm_nonrecursive(2,3));
return 0;
}
请问如何理解阿克曼函数 刚接触递归 对阿克曼函数不是很了解 求高人给出一个数学展开式 ack(2,2)的就行阿克曼Ackerman函数A(m,n)的vb程序设计
阿克曼Ackerman函数A(m,n)是所谓的双递归函数(函数以及它的一个变量由函数自身定义),亦是一个不能消除递归的函数 。阿克曼Ackerman函数A(m,n)的自变量均取自然数为值,具体如下:
A(m,n)=n+1当m=0
A(m,n)= A( m-1 , 1)当m0,n=0
A(m,n)= A( m-1,A(m , n-1))当m0,n0
一、Vb窗体设计如下:
三个文本框,其中文本框1用于输入m的值,文本框2用于输入n的值,文本框3用于输出结果A(m,n)的值,还有一个用于计算求结果的命令按钮 。
二、阿克曼Ackerman函数A(m,n)vb程序如下:(调试程序时不能用太大的数字)
Private Sub Command1_Click()
m = Val(Text1.Text)
n = Val(Text2.Text)
Text3.Text = a(m, n)
End Sub
Function a(ByVal m As Integer, ByVal n As Integer) As Long
If m = 0 Then a = n + 1
If m0 And n = 0 Then a = a(m - 1, 1)
【阿克曼函数java代码 阿克曼函数tree3】If m0 And n0 Then a = a(m - 1, a(m, n - 1))
End Function
三、用阿克曼Ackerman函数计算A(3,8)、A(2,10)、A(3 , 3)的值如下:
1、A(3,8)=2045
2、A(2,10)=23
3、A(3,3)=61
========================================
您的问题==我的课题奉献知识==辉煌生命
黑龙江省 张志晨
========================================
下面是我在电子表格里用VBA做的过程展示:
代码设计如下:
Dim b(1000) As Long
Dim k As Integer
Dim x(1000), y(1000)
Sub Command1_Click()
k = 0
m = 2
n = 3
Cells(1, 1) = a(m, n) '在A1里显示最终函数值
For i = 1 To k
Cells(i, 3) = x(i) '在C列显示M的变化
Cells(i, 4) = y(i) '在D列显示N的变化
Cells(i, 5) = b(i) '在E列显示A的变化,也就是函数值的变化过程
Next
End Sub
Function a(ByVal m As Integer, ByVal n As Integer) As Long
k = k + 1
If m = 0 Then a = n + 1
If m0 And n = 0 Then a = a(m - 1, 1)
If m0 And n0 Then a = a(m - 1, a(m, n - 1))
x(k) = m
y(k) = n
b(k) = a
End Function
演示结果:
M N A
. . 0
. . 0
. . 0
. . 0
. . 0
1 0 2
1 0 2
2 0 3
. . 0
. . 0
. . 0
1 0 2
1 0 2
1 1 3
1 2 4
2 1 5
. . 0
. . 0
. . 0
. . 0
. . 0
1 0 2

推荐阅读