8

n数値の範囲が数値の因数であるかどうかを再帰的にチェックする単純なPythonスクリプトがあり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 に答える