已知Ackerman函数的定义如下:
(1)写出递归算法;
(2)写出非递归算法;
(3)根据非递归算法, 画出求akm(2,1)时栈的变化过程。
能否从这n件物品中选择若干件放入此背包中,使得放入的重量之和正好为s。如果存在一种符合上述要求的选择,则称此背包问题有解(或称其解为真);否则称此背包问题无解(或称其解为假)。试用递归方法设计求解背包问题的算法。(提示:此背包问题的递归定义如下:)
递归方法能用来定义增长很快的函数,下面定义的阿克曼函数就是这样。
试计算A(n,1),A(n,2),A(n,3),A(4,4).
例如,求72和40的最大公因数,即计算GCD(724,344):
GCD(724,344)=GCD(344,724%344)=GCD(344,36)
=GCD(36,344%36)=GCD(36,20)
=GCD(20,36%20)=GCD(20,16)
=GCD(16,20%16)=GCD(16,4)
=GCD(4,16%4)=GCD(4,0)
=4
设f是三元原始递归全函数,g定义为
(1)若h(x)=,(8(x,y))=0),则此时称h为 递归函数是否妥当?为什么?
(2)证明下列函数h是μ-递归函数:
A.n*factorial(n-1)
B.n*factorial(n-2)
C.n*factorial(n)
D.n*factorial(n+1)