月考选择题
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
单项选择题
1. 递归的基本特点是( )
{{ select(1) }}
- 函数调用其他函数
- 函数调用自身
- 必须用循环实现
- 不需要结束条件
2. 递推的过程更接近( )
{{ select(2) }}
- 从已知推未知
- 从未知推已知
- 层层递进
- 不需要初始条件
3.选择排序每一轮的主要操作是( )
{{ select(3) }}
- 相邻个元素和前一个比较交换
- 找到最大 / 小元素并交换位置
- 把元素插入合适位置
- 把元素插入任意位置
4. 对 [2,4,1,3] 做选择排序(升序),第一轮后结果是( )
{{ select(4) }}
- [1,4,2,3]
- [2,1,4,3]
- [2,4,3,1]
- [1,2,4,3]
5. 冒泡排序的核心是( )
{{ select(5) }}
- 找最小元素交换
- 相邻元素比较后交换
- 直接拆分列表
- 一次性排好所有元素
6.选择排序的核心思想是( )
{{ select(6) }}
- 相邻元素比较交换,逐步将最大元素 “冒” 到末尾
- 每轮找到最小(大)元素,与当前位置交换
- 将元素插入已排序序列的合适位置
- 分治后合并子序列
7. 冒泡排序中,若列表已有序,优化后的算法(添加标志位)会执行( )轮外层循环
{{ select(7) }}
- 0
- 1
- n(列表长度)
- n-1
8.斐波那契数列(F (n)=F (n-1)+F (n-2))的递推实现中,计算 F (5) 需已知的初始条件是( )
{{ select(8) }}
- F (1) 和 F (2)
- F (3) 和 F (4)
- F (0) 和 F (1)
- 仅 F (1)
9. 对列表 [4,3,2,1] 分别用选择排序(升序)和冒泡排序(升序),两种算法在排序过程中 “元素交换次数” 的关系是( )
{{ select(9) }}
- 选择排序交换次数更多
- 冒泡排序交换次数更多
- 两者交换次数相同
- 无法确定
10. 以下算法中,通过 “将问题分解为更小的同类问题” 解决的是( )
{{ select(10) }}
- 递推实现的斐波那契数列
- 冒泡排序
- 递归实现的阶乘计算
- 选择排序
程序填空(一)
lis = [3,5,1,4,2]
n = len(lis)
for i in range(____①____): # 外层循环控制轮次
min_index = ____②____ # 记录本轮最小元素的索引
for j in range(____③____): # 内层循环寻找最小元素
if lis[j] < lis[min_index]:
min_index = j
# 交换当前位置与最小元素位置的值
lis[i], lis[min_index] = ____④____, ____⑤____
print(lis) # 最终输出[1,2,3,4,5]
11. ①处应填入:
{{ select(11) }}
- n
- n-1
- 2
- n+1
12. ②处应填入:
{{ select(12) }}
- 0
- j
- i
- n-1
13.③处应填入:
{{ select(13) }}
- i, n
- i+1, n-1
- 0, i
- n-1, i
14. ④处应填入:
{{ select(14) }}
- lis[i]
- lis[min_index]
- min_index
- i
15. ⑤处应填入:
{{ select(15) }}
- lis[i]
- lis[min_index]
- min_index
- i
程序填空(二)
def factorial(n):
if ____①____: # 终止条件
return ____②____
else:
return ____③____ * ____④____ # 递归调用
# 测试:计算5的阶乘
print(factorial(____⑤____))
16. ①处应填入:
{{ select(16) }}
- n == 0 or n == 1
- n > 1
- n < 0
- n == 5
17. ②处应填入:
{{ select(17) }}
- 0
- 1
- n
- n-1
18.③处应填入:
{{ select(18) }}
- factorial(n)
- factorial(n+1)
- factorial(n-1)
- n+1
19. ④处应填入:
{{ select(19) }}
- n
- n-1
- 1
- 0
20. ⑤处应填入:
{{ select(20) }}
- 0
- 1
- 5
- 10