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

Python实现因子树函数factor(6)输出错误如何修复?

因子树代码修复方案

问题表现

运行print(factor(6))时输出不符合要求:

  • 预期输出格式:(2(3, none))
  • 实际输出:(2, none)

原问题代码:

def factor(x):
i = 2
while x > i:
        if x % i == 0 and x != i:            
            if x == i:
                return i
            return i, factor(x/i)
        else:
            i+= 1 
print(factor(6))

错误点梳理

  1. 语法错误:函数内部的变量定义、循环逻辑没有正确缩进,Python无法正常执行
  2. 循环边界错误:循环条件写为x > i,当因子遍历到等于x本身(也就是最后一个质因子)时会直接跳出循环,函数无显式返回值,默认返回None
  3. 逻辑冗余:循环内部的if x == i分支永远不会触发,因为外层循环条件已经把x==i的场景排除了
  4. 返回格式错误:原代码直接返回元组(i, factor(x/i)),和要求的括号嵌套格式不匹配;另外使用普通除法/会得到浮点数,传入下一层递归会导致计算异常

修复后可运行代码

def factor(x):
    i = 2
    # 修正循环边界,遍历到i等于x为止
    while i <= x:
        if x % i == 0:
            # 遍历到自身说明是最后一个质因子,直接返回
            if x == i:
                return i
            # 按要求格式拼接嵌套字符串,用整数除法避免浮点数问题
            return f"({i}({factor(x // i)}, none))"
        i += 1

print(factor(6))

运行上述代码,输出结果为(2(3, none)),完全符合要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:55:05