自顶向下分析,自底向上解决
1.简单但耗费巨大的递归写法
class Solution:
def Fibonacci(self, n):
# write code here
if n == 0:
return 0
elif n == 1:
return 1
else:
return self.Fibonacci(n-1)+self.Fibonacci(n-2)
在递归的过程中,许多值被重复计算,导致结果超时
2.合理的循环写法
class Solution:
def __init__(self):
self.fib_1 = 1
self.fib_2 = 0
def Fibonacci(self, n):
if n == 0:
return 0
if n == 1:
return 1
else:
fib_1 = 1
fib_2 = 0
fib_N = 0
fib_list = []
for i in range(1,n):
fib_N = fib_1+fib_2
fib_2 = fib_1
fib_1 = fib_N
return fib_N
自底向上,避免了重复计算