Python fibonacci未指定缩进

Python fibonacci未指定缩进,python,arrays,indentation,fibonacci,Python,Arrays,Indentation,Fibonacci,我刚开始编写代码和学习python。我有作业要打印斐波那契 N=11和N=200的数字,使用一种称为Memoization的方法。我找到了解决方案,但当我运行代码时,我得到了两件事:1 Traceback (most recent call last): **File "python", line 7 if n== 1: ^** **IndentationError: unexpected indent** 第二,当我跑步的时候,我得到了一个空的结

我刚开始编写代码和学习python。我有作业要打印斐波那契 N=11和N=200的数字,使用一种称为Memoization的方法。我找到了解决方案,但当我运行代码时,我得到了两件事: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))
在Python中,缩进就是一切,我不确定最后几行缓存是否正确

为了保持一致,我建议使用4个空格(使用制表符)


Python通过查看缩进来理解您要做的事情。

请参阅@Alexis Drakopoulos以获得对代码的直接修复。如果您想简化实现备忘录,可以使用名为lru_缓存的装饰器

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
    if n<= 2:
        return 1
    return fibonacci(n-1)+fibonacci(n-2)
从functools导入lru\U缓存
@lru_缓存(最大大小=无)
def fibonacci(n):

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

您的代码有三个问题:

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

对于在if语句之后运行的代码,需要将下一个代码块缩进。然后,当您拥有elif(与if语句处于同一级别)时,您需要将缩进调回以匹配if的级别

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

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

2。输入错误:最终语句有输入错误(因此您实际上没有调用您定义的函数!)

3。Fibbonacci_缓存:它未定义,因此已添加到顶部

希望对你有所帮助-祝你在接下来的编程之旅中好运。。。这需要毅力,但我相信你会及时掌握的

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))

“。第二,我在运行时得到了空结果…”但你刚才说你的代码没有运行?缩进在python中非常重要,如果n==1必须从行首开始。你似乎已经“找到”了代码。我怀疑家庭作业的重点是你自己写代码,而不是抄袭代码。按照错误所说的你必须修复缩进。谢谢你的回答。当他们要求打印11时,我能做的是工作,但当我打印200时,它被卡住了def fibonacci(n):如果n==1或n==2:返回1返回fibonacci(n-1)+fibonacci(n-2)打印fibonacci(200)你可以试着在你的函数中打印来检查它被卡住的地方。它被卡住在一个很高的数字上以计算出答案:)
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))