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
相关产品推荐
相关产品推荐

