def fbnc(n): if n<= 1: return n else: return fbnc(n-2)+fbnc(n-1) print(fbnc(5)) print(fbnc(15)) print(fbnc(25)) print(fbnc(50))
那么时间复杂度不难看出是2的(n/2)次方
这就是指数级的,当n的数值大的时候就会很慢
比如上面的运行结果的fbnc(50)就等了很长时间(看看你的电脑是不是也温度上升了~~~~)
# def fbnc(n): # if n<= 1: # return n # else: # return fbnc(n-2)+fbnc(n-1) def fbnc2(n): if(n<=1): return [1,0] else: [a,b] = fbnc2(n-1) return [a+b,a] # print(fbnc(5)) # print(fbnc(15)) # print(fbnc(25)) print(fbnc2(50)) print(fbnc2(500))
现在很快了吧
时间复杂度是O(n)