如何编写递归函数统计列表中后一元素为当前元素两倍的元素个数
递归版本实现
核心逻辑
- 边界条件:当列表长度小于2时,不存在相邻元素,直接返回0
- 递归逻辑:先判断当前列表前两个元素是否满足「后一个元素是前一个的2倍」的要求,再递归计算从第二个元素开始的子列表的符合条件的数量,两者相加即为最终结果
完整代码
def countDouble_recursive(L): # 递归终止条件 if len(L) < 2: return 0 # 检查当前前两位是否符合要求 current = 1 if int(L[1]) / 2 == int(L[0]) else 0 # 递归处理剩余子列表并累加结果 return current + countDouble_recursive(L[1:]) # 测试代码 L = [1, 2, 4, 8, 16, 32, 64, 128, 256] print(countDouble_recursive(L))
运行测试用例输出为8,和你原有非递归版本的输出结果完全一致。
优化建议:原逻辑中用除法判断可能存在浮点数精度风险,建议替换为
int(L[1]) == 2 * int(L[0]),判断逻辑更严谨。
内容的提问来源于stack exchange,提问作者Zack
相关产品推荐
相关产品推荐

