我一直在尝试使用Python上的记忆为Fibonacci编写代码。
这是我的代码
def fib(n, memo):
if memo[n] is not None:
return memo[n]
if n == 1 or n == 2:
result = 1
else:
result = fib_2(n-1, memo) + fib_2(n-2, memo)
memo[n] = result
return result
def fib_memo(n):
memo = [None] * (n + 1)
return fib(n, memo)
t = input("number ")
print(fib_memo(t))
它返回: -
TypeError:必须是str,而不是int"在第17行 - 备忘录= [无] *(n + 1)
我似乎无法理解这里的问题。
答案 0 :(得分:1)
您需要使用此t = int(input("number"))
或print(fib_memo(int(t)))
。因为,使用input()
的键盘输入默认为字符串。
这是您完整的工作代码: -
def fib(n, memo):
if memo[n] is not None:
return memo[n]
if n == 1 or n == 2:
result = 1
else:
result = fib(n-1, memo) + fib(n-2, memo)
memo[n] = result
return result
def fib_memo(n):
memo = [None] * (n + 1)
return fib(n, memo)
t = input("number ")
print(fib_memo(int(t)))