Python迭代查找指定步数达到目标值的序列起始值实现问题
代码问题排查
你的原始代码存在3个核心错误:
- 进入else分支后直接将入参
count赋值为0,完全丢失了传入的步数配置 - 单次计算仅执行了1次
*2+5运算,没有按传入的步数执行多步迭代 - 循环起始先执行了
number = number + 1,直接跳过了start=0的合法性校验,导致多步场景结果错误
修改后的实现
def find_start_forward(goal, count): """ 从初始值0开始正向迭代搜索,计算序列直到最终值大于等于目标值,返回对应序列起始值 :param goal: 序列最终需要达到的目标值 :param count: 达到目标值所需的步数 :pre-conditions: goal >= 0 and count >= 0 :return: 符合要求的序列起始值 """ if count == 0: return goal # 从起始值0开始逐个校验 start = 0 while True: current = start # 执行count步运算 for _ in range(count): current = current * 2 + 5 # 满足条件直接返回 if current >= goal: return start start += 1
结果验证
print(find_start_forward(100,1)) # 输出:48,验证:48*2+5=101 >=100,符合要求 print(find_start_forward(7,2)) # 输出:0,验证:0*2+5=5(第一步),5*2+5=15 >=7(第二步),符合要求
内容的提问来源于stack exchange,提问作者Mattnieks
相关产品推荐
相关产品推荐

