2016-07-04 95 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