2013-03-04 12 views
5

Ich habe ein einfaches Python-Skript, das rekursiv überprüft, ob ein Bereich von n Zahlen Faktoren einer Nummer sind x. Wenn irgendwelche der Zahlen nicht Faktoren sind, gebe ich False zurück, andernfalls wenn die n==1 ich True zurückgeben möchte. Ich gebe jedoch immer wieder NoneType zurück und würde mich über Vorschläge freuen, wie man das beheben kann.Ich erwarte 'True' aber bekomme '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 

Antwort

10

Sie nicht zurück jemals den Rückgabewert des rekursiven Aufruf:

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

Wenn Sie die return Anweisung dort weglassen, Ihre Funktion eine Return-Anweisung endet ohne damit wieder auf den Standard fallen None Rückgabewert.

Mit dem return da, es funktioniert:

>>> print recursive_factor_test(5040,7) 
True 
Verwandte Themen