算法练习时Python代码出现Execution Timed Out错误,求解决方法
问题分析与修复
你的代码出现超时是因为无限循环:当n=1时,循环条件n >= 1依然成立,执行奇数分支后n变成4,后续会逐步回到1,陷入死循环无法退出。
另外伪代码描述的是考拉兹猜想的单步逻辑,但你的函数需要统计到n变为1时的步数,所以循环终止条件和逻辑需要调整:
修复后的代码
def hotpo(n): calculator = 0 # 当n不等于1时继续循环,避免n=1时进入死循环 while n != 1: if n % 2 == 0: n = n // 2 # 用整数除法//替代浮点数除法/,避免后续出现小数导致取余错误 else: n = 3 * n + 1 calculator += 1 return calculator
关键修改点
- 循环条件改为
n != 1:当n变成1时直接退出循环,符合考拉兹猜想统计步数的需求 - 用
n = n // 2替代n = n / 2:浮点数除法会让n变成小数(比如4/2=2.0),后续n % 2虽然结果正确,但整数除法更贴合问题场景,避免不必要的类型转换
内容的提问来源于stack exchange,提问作者mustafaoguzbaran
相关产品推荐
相关产品推荐

