我是代码和学习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))
答案 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))