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

Python阶乘计算任务报错求助:EOF Error及返回值问题

问题分析

  • 你写的calculate_factorial函数完全没实现阶乘逻辑:既没有计算过程,也没有用return返回结果(无return的函数默认返回None),且无终止条件的递归调用会引发无限递归,这就是测试报错None !=1的核心原因。
  • 你写的factorial函数逻辑是正确的,但任务要求函数名必须是calculate_factorial,所以这个函数没被测试调用到。

正确实现(循环版)

def calculate_factorial(number):
    # 阶乘仅针对非负整数,处理负数输入
    if number < 0:
        return None
    result = 1
    for i in range(2, number + 1):
        result *= i
    return result

# 测试示例
print(calculate_factorial(5))  # 输出120
print(calculate_factorial(1))  # 输出1
print(calculate_factorial(0))  # 输出1

正确实现(递归版)

def calculate_factorial(number):
    if number < 0:
        return None
    # 递归终止条件:0和1的阶乘为1
    if number == 0 or number == 1:
        return 1
    # 递归公式:n! = n * (n-1)!
    return number * calculate_factorial(number - 1)

# 测试示例
print(calculate_factorial(5))  # 输出120
print(calculate_factorial(1))  # 输出1

关键注意点

  • 必须用return语句把计算结果返回给调用者,这是任务第5点的要求,没有return的函数默认返回None,会导致测试不通过。
  • 递归实现必须设置终止条件,否则会无限递归引发错误。
  • 阶乘的定义仅适用于非负整数,需要处理负数输入的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:36:09