【剑指Offer】04斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
时间限制:1秒;空间限制:32768K
解题思路
首先看到题目的第一想法就是递归,代码如下:
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n<=1:
return 1
else:
return self.Fibonacci(n-1)+self.Fibonacci(n-2)
线下运行成功,线上调试发现会超时报错。
递归的思路行不通于是想到了用迭代的思路,最终运行通过。python代码:
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
i=0
j=1
k=0 #中间变量
while n>0:
k = j
j += i
i = k
n -= 1
return i
看了讨论区大神们的分享,其实还能改进,可以去掉一个中间变量k,具体操作如下:
while n>0:
j += i
i = j - i
n-=1