2013-03-04 10 views
5

nの数値が数値の因数であるかどうかを再帰的にチェックする単純なPythonスクリプトがあります。xです。数字のいずれかが要因でない場合はFalse、それ以外の場合はn==1を返信します。Trueです。しかし、私はNoneTypeを返信し続け、これを修正する方法についての提案をいただきたいと思います。私は 'True'と期待していますが、 'None'を取得します

#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 

答えて

10

あなたは今までに再帰呼び出しの戻り値を返しません:あなたはそこにreturnステートメントを省略すると

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

、あなたの関数は、このようにデフォルトにフォールバック、returnステートメントせずに終了None戻り値。そこreturn

、それが動作します:

>>> print recursive_factor_test(5040,7) 
True