Python fibonacci意外缩进

时间:2018-10-20 13:41:02

标签: python arrays indentation fibonacci

我是代码和学习python的新手。我有作业做印刷斐波那契 N = 11和N = 200的数字使用记忆方法。我找到了解决方案,但是当我运行代码时,我得到了两件事:1。

 Traceback (most recent call last):
      **File "python", line 7
        if n== 1:
        ^**
**IndentationError: unexpected indent**

然后我在运行时的某个时候得到空结果。哪个错误是什么代码:

def fibonacci (n) :
 # If we have cached the value, then return it 
 if n in fibonacci_cache:
   return fibonacci_cache[n]

   # Compute the Nth term 
      if n== 1:
       value = 1
       elif n == 2:
         value = 1 
         elif n > 2:
           value = fibonacci(n-1) + fibonacci(n-2)

           # Cache the value and return it 
           fibonacci_cache[n] = value
           return value

             print(n, ":", fibonacchi(11))

3 个答案:

答案 0 :(得分:2)

有关代码的直接修复,请参见@Alexis Drakopoulos。如果要简化实现回忆的方式,可以使用称为lru_cache的装饰器。

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
    if n<= 2:
        return 1
    return fibonacci(n-1)+fibonacci(n-2)

答案 1 :(得分:0)

def fibonacci(n):

    # If we have cached the value, then return it
    if n in fibonacci_cache:
        return fibonacci_cache[n]

    # Compute the Nth term
    if n == 1:
        value = 1
    elif n == 2:
        value = 1
    elif n > 2:
        value = fibonacci(n-1) + fibonacci(n-2)

        # Cache the value and return it
        fibonacci_cache[n] = value
        return value

    print(n, ":", fibonacchi(11))

Python缩进就是一切,我不确定这与缓存的最后几行是否正确。

我建议使用4个空格(使用制表符)以便保持一致。

Python会查看缩进以了解您要做什么。

答案 2 :(得分:0)

欢迎使用Python编程和StackOverflow:-)

您的代码存在三个问题:

1。缩进: Python需要您注意缩进,以使特定级别的代码缩进相同的数量。

对于在if语句之后运行的代码,您需要将下一段代码缩进。然后,当有了elif(与if语句处于同一级别)时,您需要将缩进重新显示出来以匹配if的级别。

您可以缩进空格或制表符,但需要保持一致(即坚持一个)

您使用的编辑器在粘贴代码时可能弄乱了意图,当您将其放入StackOverflow时,某些缩进也可能弄乱了,但是您需要它来查找像下面这样。在这种情况下,每个意图都是两个空格(因此缩进是首先没有空格,然后是两个空格,然后是四个空格,等等。

2。错别字:最后一条语句有错字(因此您实际上并没有在调用您定义的函数!)

3。 Fibbonacci_cache::它没有定义,因此已添加到顶部

希望有帮助-祝您在编程的其余过程中一切顺利。这需要毅力,但我敢肯定,您会及时得到解决的!

fibonacci_cache = {}

def fibonacci (n) :
  # If we have cached the value, then return it 
  if n in fibonacci_cache:
    return fibonacci_cache[n]

  # Compute the Nth term 
  if n== 1:
    value = 1
  elif n == 2:
    value = 1 
  elif n > 2:
    value = fibonacci(n-1) + fibonacci(n-2)

  # Cache the value and return it 
  fibonacci_cache[n] = value
  return value

print("n:", fibonacci(11))