1单选(2分)
以下哪项不是递归的三定律之一?
A. 对函数运行结果进行缓存
B. 有一个基本结束条件
C. 算法调用自身
D. 能够不断减小问题规模
正确答案:A
2单选(2分)
递归函数的实现与哪种数据结构直接相关?
A. 队列
B. 栈
C. 堆
D. 无序表
正确答案:B
3单选(2分)
使用进制转换函数:
def toStr2(n,base):
convertString='0123456789ABCDEF'
if n == 0:
return ''
return toStr2(n // base, base) + convertString[n % base]
将数字135转换为三进制“12000”的过程中,函数共被调用了多少次(包含初始调用)?
A. 4
B. 5
C. 6
D. 3
正确答案:C
4单选(2分)
若定义实心等边三角形为0阶谢尔宾斯基三角,现给定一个边长为1的3阶谢尔宾斯基三角,请问它的面积更接近以下哪个数字?
A. 0.1370079
B. 0.1826772
C. 0.4330127
D. 0.2435696
正确答案:B
5单选(2分)
以下是使用递归方式实现的圆括号匹配函数:
def match(s, n=0):
if s:
if s[0] == '(':
n += 1
else:
n -= 1
if n < 0:
return False
return match(s[1:], n)
else:
return n == 0
请问以下哪个输入中可能出现参数为match("((()))", 3)的函数调用?
A. “(((()((()))”
B. “((()))(((”
C. “((()))”
D. “()((()))”
正确答案:A
6多选(3分)
给定绘制分形树函数:
def tree(branch_len):
t.pendown()
t.forward(branch_len)
t.penup()
if branch_len > 5:
t.left(20)
tree(branch_len - 5)
t.right(40)
tree(branch_len - 5)
t.left(20)
t.backward(branch_len)
其中t为海龟画笔对象。
在调用函数tree(50)时,下列哪些说法是正确的?
A. 树梢共512个
B. 组成树的线段共1023条
C. 树梢距树根距离为275
D. 树梢距树根距离为270
正确答案:A、B、C
7多选(3分)
以下函数用于可用于求方程的近似解,其中参数f为一个输入、输出均为数字的函数
def solve(f, x1, x2):
mid = (x1 + x2) / 2
if f(mid) == 0 or abs(x1 - x2) < 1e-8:
return # <A>
elif f(mid) * f(x1) > 0:
return # <B>
else:
return # <C>
如何补全该函数使其可以正常使用?
A. C处应填:mid
B. C处应填:solve(f, mid, x2)
C. C处应填:solve(f, x1, mid)
D. B处应填:solve(f, mid, x2)
正确答案:C、D
8多选(3分)
以下哪些问题可以用递归算法求解?
A. 图像、语义识别
B. 查找有序列表中某元素是否存在
C. 绘制Mandelbrot集的图形
D. 求斐波那契数列第N项的值
正确答案:B、D