You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写考拉兹(Collatz)猜想函数出现n未定义错误如何解决

错误原因

  • 执行while n != 1:时,变量n没有提前定义赋值,解释器找不到该变量因此抛出未定义错误
  • 现有循环逻辑先计算下一步值再打印,会漏掉初始值的输出,和你预期的10开头的序列不符
  • 末尾单独调用collatz_step(3)没有实际作用,也不会把值传给循环里的n

修正方案

你想要输出10,5,16,8,4,2,1的序列,直接给循环的n设置初始值为10,调整打印顺序即可,修正后代码如下:

def collatz_step(n):
    if n % 2 == 0:
        return n // 2
    else:
        return 3*n + 1

# 给n赋初始值10,对应你要的输出序列
n = 10
while n != 1:
    # 先打印当前n的值,避免漏掉初始值
    print(n)
    n = collatz_step(n)
# 循环结束后n等于1,还要打印最后一个1
print(n)

运行上述代码就会输出你预期的序列:10, 5, 16, 8, 4, 2, 1。如果需要测试其他初始值,修改n = 10这一行的数值即可。

内容的提问来源于stack exchange,提问作者Bath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:39:05