大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
斐波那契数列是一个满足
的数列
数据范围:
要求:空间复杂度
,时间复杂度
,本题也有时间复杂度
的解法
一个正整数n
输出一个正整数。
4
3
根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。
1
1
2
1
牛客网会把 or 转换成 &nbs***bsp; 不知道为什么 '''递归法 (超时)''' class Solution: def Fibonacci(self , n: int) -> int: if n <= 0: return 0 if n == 1: return 1 return self.Fibonacci(n-1) + self.Fibonacci(n-2) '''逐一记录法''' class Solution: def Fibonacci(self , n: int) -> int: if n <= 0: return 0 result = [1]*n if n > 2: for i in range(2,n): result[i] = result[i-1] + result[i-2] return result[n-1] '''三数循环法''' class Solution: def Fibonacci(self , n: int) -> int: a,b = 1,1 if n <= 0: return 0 if n == 1&nbs***bsp;n == 2: return 1 if n > 2: for i in range(2,n): res = a+b a,b = b,res return res '''二数循环法''' class Solution: def Fibonacci(self , n: int) -> int: if n <= 0: return 0 if n == 1&nbs***bsp;n == 2: return 1 a,b = 1,1 if n > 2: for i in range(2,n+1): a,b = b,a+b return a