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

Python使用字典实现Collatz序列功能 求最长序列对应数值代码调试

考拉兹序列最长数计算代码修正

现有代码问题汇总

  • 初始值设置错误:计算每个数的序列长度时,将current初始值设为1,导致while current != 1的循环永远不会执行,所有数的序列长度都被记为0,正确初始值应为当前遍历的数i。
  • 序列计算逻辑错误:循环中计算下一个数时,误用了函数入参number而非当前数current,且使用普通除法/会得到浮点数,易引发后续计算异常,应改为整数除法//。
  • 变量未定义就调用:调用collatz函数时传入的number没有提前定义,也没有接收用户输入的逻辑,会触发变量未定义报错。
  • 打印语句语法错误:print = result是将Python内置的print函数覆盖为普通变量,不会执行打印操作,正确写法为print(result)。
  • 计数逻辑缺失:初始数本身属于考拉兹序列的第一个元素,计数初始值应设为1而非0。

修正后完整代码

def collatz(max_num):
    seg_length = {}
    # 遍历所有小于等于上限的整数
    for i in range(1, max_num + 1):
        current = i
        count = 1  # 初始数本身算序列第一个元素
        while current != 1:
            if current % 2 == 0:
                current = current // 2
            else:
                current = 3 * current + 1
            count += 1
        seg_length[i] = count
    # 找到序列长度最长的数
    max_len = max(seg_length.values())
    for num, length in seg_length.items():
        if length == max_len:
            return num

# 接收用户输入
input_num = int(input("请输入一个正整数:"))
result = collatz(input_num)
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:45:03