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))
错误点梳理
- 语法错误:函数内部的变量定义、循环逻辑没有正确缩进,Python无法正常执行
- 循环边界错误:循环条件写为
x > i,当因子遍历到等于x本身(也就是最后一个质因子)时会直接跳出循环,函数无显式返回值,默认返回None - 逻辑冗余:循环内部的
if x == i分支永远不会触发,因为外层循环条件已经把x==i的场景排除了 - 返回格式错误:原代码直接返回元组
(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
相关产品推荐
相关产品推荐

