2016-02-29 101 views
-1

這是我的代碼:Python的遞歸分配錯誤

def prifact(n): 
    if n == 0: 
     return [] 

    def prifactHelper(x): 
     if x == 1: 
      return [] 
     else: 
      for i in range(2,x+1): 
       if x % i == 0: 
        return [i] + prifactHelper(x/i) 

    return prifactHelper(n) 

這是我的錯誤:

local variable 'prifactHelper' referenced before assignment 

我已經正確定義的函數「prifactHelper」所以,我想不通這是怎麼回事上。

更新:

代碼工作得很好,顯然我有一個壓痕錯誤,在分析我的代碼堆棧溢出,我糾正。

+1

請使用多個空格縮進,四個空格是非常標準的。此外,您粘貼的代碼會拋出縮進錯誤(返回函數外部)。請檢查一下。 –

回答

0
def prifact(n): 
    if n == 0: 
    return [] 

    def prifactHelper(x): 
     if x == 1: 
      return [] 
     else: 
      for i in range(2, int(x+1)): 
       if x % i == 0: 
        return [i] + prifactHelper(x/i) 

    return prifactHelper(n) 

if __name__ == '__main__': 
    print(prifact(10)) 

輸出[2, 5]。不過,您需要撥打range並用整數,否則您有可能獲得TypeError: 'float' object cannot be interpreted as an integer。所以請致電range(2, int(x+1)),而不是隻是range(2, x+1)

+0

感謝您使用整數對話提示。 – Peter