题库首页 › 青少年软件编程(Python) › 题目 26236

果园里分苹果,一共有 8 个苹果,按分治思路平分:每次把一堆苹果平均分成左右两小堆,直到每堆只剩 1 个苹果就不再分。下面这段Python代码用来统计一共需要对半分多少轮,请问划线处应填写哪一项最合适?( )def split(n): if n == 1: return 0 return ____________print(split(8))

A:n + split(n//2)
B:1 + split(n//2)
C:1 + split(n-2)
D:n + split(n-2)

正确答案:B

答案解析

分治法的核心思想是"分而治之"——将原问题分解为规模较小的子问题,分别求解后再合并结果。 本题中,每次拆分操作(将一堆苹果分成两小堆)计为 1 轮,“轮”指递归层数。递归过程如下:n = 8时,拆分1轮,剩下4n = 4时,拆分1轮,剩下2n = 2时,拆分1轮,剩下1n = 1时,无需再拆分,返回 0因此,总拆分轮数 = 1 + 1 + 1 = 3轮 ,递归表达为 1 + split(n // 2)。

试卷来源:202609 青少年软件编程等级考试Python四级真题

本卷相关题目

在线做题 同科目题库