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