问题 2:如果加了 continue,为何会进入死循环?
为了理解这个问题,先来看 continue 的作用:
continue 会立即结束当前循环的剩余部分,并直接跳到循环的下一轮迭代。
结合你的代码:
n = int(input("请输入一个自然数:"))
while n > 0:
if n % 2 == 0:
print(n, "/2 = ", n // 2, sep='')
n = n // 2
continue # 强制跳到 while 顶部
else:
print(n, "*3+1 = ", n * 3 + 1, sep='')
n = n * 3 + 1
continue # 强制跳到 while 顶部
if n == 1: # 这一段永远不会被执行到
break
出现死循环的原因:
- 当添加了 continue 后,程序在执行完 if 或 else 分支中的代码后,会直接跳到 while 的顶部,跳过循环体中剩余的代码。
- 例如,在你的代码中,一旦执行了 continue,if n == 1: break 这一句就永远不会被执行,因为程序在到达这里之前已经被 continue 直接跳过了。
- 如果没有 break,程序在每一轮循环中都会更新 n 的值,但永远无法通过 if n == 1 条件退出循环,导致程序继续无限运行。
|