2016-07-04 108 views
1
def fibonacci(n): 
    if n==0: 
     return 0 
    if n==1 | n==2: 
     return 1 
    f = (fibonacci(n-1) + fibonacci(n-2)) 
    return f 

嗨,我是一個python新手,我想實現一個遞歸的斐波納契函數,但我的代碼(上面)不起作用。當我調用這個函數時,終端打印第6行,直到達到遞歸深度限制。這裏使用的正確語法是什麼?Python中的遞歸錯誤

回答

1

你需要非常小的變化=>|or

(算術或邏輯OR)

def fibonacci(n): 
    if n==0: 
     return 0 
    if n==1 or n==2: 
     return 1 
    f = (fibonacci(n-1) + fibonacci(n-2)) 
    return f 


print fibonacci(6) 
# 8 

另一種選擇是使用if (n==1)|(n==2):第4行

希望它有助於:)

1

「|」是算術的,而不是邏輯的。使用「或」

def fibonacci(n): 
     if n==0: 
      return 0 
     if n==1 or n==2: 
      return 1 
     f = (fibonacci(n-1) + fibonacci(n-2)) 
     return f