武汉大学数据结构MOOC第6周测验

1单选(2分)一个正确的递归算法通常包含( )。
A.递归出口
B.递归体
C.递归出口和递归体
D.以上都不包含
正确答案:C
解析: C、正确的递归算法应包含递归出口和递归体两部分,缺一不可。

课本考据:递归算法设计的基本步骤是先确定求解问题的递归模型,在转换成对应的 C/C++语言函数。而一个递归体模型由递归出口(确定结束条件)和递归体(确定递推关系)两部分组成。

2单选(2分)递归函数f(x,y)定义如下:
f(x,y)=f(x-1,y)+f(x,y-1) 当x>0且y>0
f(x,y)=x+y 否则
则f(2,1)的值是( )。
A.1
B.2
C.3
D.4
正确答案:D
解析: D、f(2,1)=f(1,1)+f(2,0)=f(0,1)+f(1,0)+2=1+1+2=4。

3单选(2分)某递归算法的执行时间的递推关系如下:
T(n)=1 当n=1时
T(n)=T(n/2)+1 当n>1时
则该算法的时间复杂度为( )。
A.O(1)
B.O(log2n)
C.O(n)
D.O(nlog2n)
正确答案:B
解析: B、不妨设n=2^k,k=log2n。
T(n)=T(n/2)+1= T(n/22)+2=…= T(n/2k)+k=T(1)+log2n=O(log2n)。

4单选(2分)某递归算法的执行时间的递推关系如下:
T(n)=1 当n=1时
T(n)=2T(n/2)+1 当n>1时
则该算法的时间复杂度为( )。
A.O(1)
B.O(log2n)
C.O(n)
D.O(log2n)
正确答案:C
解析: C、不妨设n=2^k,k=log2n。
T(n)=21*T(n/21)+1=22*T(n/22)+1+21=…=2kT(n/2k)+1+21+…+2(k-1)=2kT(1)+2k-1=2n-1=O(n)。

5单选(2分)
将递归算法转换成非递归算法时,通常要借助的数据结构是( )。
A.线性表
B.栈
C.队列
D.树
正确答案:B
解析: B、递归算法转换成非递归算法时通常使用栈。

课本考据:大多数CPU上的程序实现使用栈来支持函数调用操作。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值