我期待'真'但得到'无'

时间:2013-03-04 20:36:09

标签: 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 {}".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

1 个答案:

答案 0 :(得分:10)

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

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

当你在那里省略return语句时,你的函数在没有return语句的情况下结束,从而回退到默认的None返回值。

使用return,它有效:

>>> print recursive_factor_test(5040,7)
True