You need to enable JavaScript to run this app. 如何在Collatz序列输出的首位纳入用户输入的初始值
优惠活动
大模型
产品
解决方案
定价
更多

如何在Collatz序列输出的首位纳入用户输入的初始值

Collatz序列初始值缺失的代码修正

问题原因

现有代码的逻辑是:拿到用户输入的初始值后直接进入运算循环,仅将每次循环计算得到的新值追加到序列列表,全程没有把用户输入的初始n值本身存入序列,因此最终输出会漏掉序列最开头的初始节点。
比如输入6时,第一次循环计算得到的第一个值是3,代码直接把3作为序列的第一个元素存入,自然就丢失了初始值6。

最小改动修正方案

不需要调整原有循环的判断规则、分支运算逻辑,只需要在进入循环前,把初始n值追加到序列列表中即可,修正后的完整代码如下:

seq = []
n = int(input("\nEnter a number (greater than 1): "))
# 补全初始值存储:将用户输入的数值作为序列第一个元素
seq.append(n)
while (n > 1):
    if n % 2 == 0:
        n = n // 2
    else:
        n = 3 * n + 1
    seq.append(n)
print()
print(*seq)

修正后运行效果

输入数值6时,控制台将输出完整的Collatz序列:
6 3 10 5 16 8 4 2 1
完全满足“序列首位包含用户输入初始值”的要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 09:54:01