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

Python递归阶乘函数返回None问题排查求助

阶乘函数返回None的问题分析与修复

你的代码里导致返回None的核心问题在第一行的类型判断:

if type(num) is not int():

这里int()会创建一个值为0的整数实例,而type(num)返回的是变量的类型(比如传入5时,type(5)是int这个类型对象)。用类型对象和整数实例做is not比较,结果永远是True,所以不管你传什么合法的正整数,都会直接触发这个条件返回None。

修复方案

有两种常见的修正方式:

  1. 直接和int类型比较,不要加括号:
def factorial(num):
    if type(num) is not int:
        return None
    elif num == 0:
        return 1
    elif num < 0:
        return None
    else:
        return num * factorial(num - 1)

factorial5 = factorial(5)
print(factorial5)  # 输出120
  1. 更推荐用isinstance()做类型检查,它能兼容子类继承的场景:
def factorial(num):
    if not isinstance(num, int):
        return None
    elif num == 0:
        return 1
    elif num < 0:
        return None
    else:
        return num * factorial(num - 1)

factorial5 = factorial(5)
print(factorial5)  # 输出120

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:12:07