8

我有一个简单的 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
4

1 回答 1

17

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

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
于 2013-03-04T20:36:46.357 回答