Python 我希望';正确';但是得到';无';

Python 我希望';正确';但是得到';无';,python,Python,我有一个简单的Python脚本,它递归地检查n数字的范围是否是数字x的因子。如果任何数字不是因子,我将返回False,否则当n==1时,我将返回True。不过,我会不断返回NoneType,希望您能给我建议如何解决这个问题 #Function def recursive_factor_test(x, n): if n==1: return True else: if x % n == 0: #print "passed

我有一个简单的Python脚本,它递归地检查
n
数字的范围是否是数字
x
的因子。如果任何数字不是因子,我将返回
False
,否则当
n==1
时,我将返回
True
。不过,我会不断返回
NoneType
,希望您能给我建议如何解决这个问题

#Function
def recursive_factor_test(x, n):
    if n==1:
        return True
    else: 
        if  x % n == 0:
            #print "passed {}".format(n)
            recursive_factor_test(x,n-1)
        else:
            return False

#Example Expecting False
print recursive_factor_test(5041,7)
>>False
#Example Expecting True
print recursive_factor_test(5040,7)
>>None
type(recursive_factor_test(5040,7))
>>NoneType

您永远不会返回递归调用的返回值:

if  x % n == 0:
    #print "passed {}".format(n)
    return recursive_factor_test(x,n-1)
如果省略那里的
return
语句,则函数将在没有return语句的情况下结束,从而返回默认的
None
返回值

有了
返回键
,它可以工作:

>>> print recursive_factor_test(5040,7)
True