2013-03-04 7 views
5

मेरे पास एक साधारण पायथन स्क्रिप्ट है जो 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 

उत्तर

10

आप कभी पुनरावर्ती कॉल के रिटर्न मान नहीं लौटते:

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 
संबंधित मुद्दे