将递归算法转换成对应的非递归算法时,除了单向递归和尾递归的情况外,通常需要使用()保存中间结果。
A、链表
B、栈
C、队列
D、顺序表
A、链表
B、栈
C、队列
D、顺序表
第1题
已知Ackerman函数定义如下:
(1)根据定义,写出它的递归求解算法;
(2)利用栈,写出它的非递归求解算法。
第3题
A.尾递归是一种递归,它首先执行计算,然后进行递归调用。
B.尾递归当前步骤的结果被传递到下一个递归调用。
C.尾递归遵循一个实现规则: 递归调用必须是方法的最后一次调用。
D.要将递归声明为尾递归,需要在递归函数之前使用tail修饰符。
第4题
设勒让得多项式定义如下:
(1)编写一个递归算法,计算该多项式的值;
(2)编写一个非递归算法,计算该多项式的值。
第5题
下面是一个二叉树的前序遍历的递归算法。
(1)改写PreOrder算法,消去第二个递门调用PreOrder(t.>rightChild)。
(2)利用栈改写PreOrder算法,消去两个递归调用,
第6题
(1)试定义该广义表的类结构,
(2)采用递归的算法对一个非递归的广义表进行遍历。
(3)试使用一个栈,实现一个非递归算法,对一个非递归广义表进行遍历。
第8题
A、二叉链表
B、广义表
C、三叉链表
D、烦序
第10题
已知Ackermann函数定义如下:
①写出计算Ack(m,n)的递归算法,并根据此算法给出出Ack(2,1)的计算过程。
②写出计算Ack(m,n)的非递归算法。
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!