题目要求:
思路:
思路1:使用列表(伪代码)
斐波那契函数(第n个值):
定义列表怕[0,1],斐波那契数列前两项
如果n大于数列长度,说明数列中没有所要的值:
一直向列表中加值即可,每次加的值都是数列的前两项之和
返回列表中第下标为n的数即可
思路2:循环(伪代码)
斐波那契函数(第n个值):
如果n为1或2:
返回1即可
否则:
f1为第一个数值,f2 第二个数值,fn为结果
#应循环n-2次,节省空间n>2时继续循环即可
当n>2时继续循环:
#每次循环
将fn赋值为f1+f2
f1赋值为f2
f2赋值为fn
结束循环返回fn即可
思路3:递归(伪代码)
#python使用递归会超时,python支持递归效果不好
斐波那契函数(第n个值):
如果n为1或2:
返回1即可
否则:
返回 斐波那契函数(第n-1个值)+ 斐波那契函数(第n-2个值)
代码如下:
思路1:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型
# @return int整型
#
class Solution:
def Fibonacci(self , n: int) -> int:
# -*- coding:utf-8 -*-
lst = [0,1]
while len(lst)<n+1:
lst.append(lst[-1]+lst[-2])
return lst[n]
思路2:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型
# @return int整型
#
class Solution:
def Fibonacci(self , n: int) -> int:
# -*- coding:utf-8 -*-
if n == 1 or n == 2:
return 1
else:
f1,f2,fn = 1,1,2
while n > 2:
fn = f1 + f2
f1 = f2
f2 = fn
n -= 1
return fn
思路3:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型
# @return int整型
#
class Solution:
def Fibonacci(self , n: int) -> int:
# -*- coding:utf-8 -*-
if n == 1 or n == 2:
return 1
else:
return self.Fibonacci(n-1) + self.Fibonacci(n-2)
运行效果:
思路1:
思路2:
思路3: