试简述复杂递归程序向非递归程序转换的方法,并说明栈在复杂递归程序转换成非递归程序的过程中所起的作用。
查看答案
已知多项式pn(x)=a0+a1x+a2x2+…+anxn的系数按顺序存储在数组a中,试编写:(1)一个递归函数,求n阶多项式的值。(2)编写一个非递归函数,求n阶多项式的值。
已知两个一维整型数组a和b,分别采用递归和非递归方式编写函数,求两个数组的内积(数组的内积等于两个数组对应元素相乘后再相加所得到的结果)。
写出求Ackerman函数Ack(m,n)值的递归函数,Ackerman函数在m≥0和n≥0时的定义为:Ack(0,n)=n+1;Ack(m,0)=Ack(m−1,1);Ack(m,n)=Ack(m−1,Ack(m,n−1))n>0且m>0
n阶Hanoi塔问题:设有3个分别命名为X,Y和Z的塔座,在塔座X上从上到下放有n个直径各不相同、编号依次为1,2,3,…,n的圆盘(直径大的圆盘在下,直径小的圆盘在上),现要求将X塔座上的n个圆盘移至塔座Z上,并仍然按同样的顺序叠放,且圆盘移动时必须遵循以下规则:(1)每次只能移动一个圆盘;(2)圆盘可以插在塔座X,Y和Z中任何一个塔座上;(3)任何时候都不能将一个大的圆盘压在一个小的圆盘之上。试编写一个递归程序实现该问题。