大家都知道斐波那契数列,现在要求输入一个正整数 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
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param n int整型 # @return int整型 # class Solution: def p(self, n): dp = [0] * (n+1) dp[0]=0 dp[1] = 1 for i in range(2, n+1): dp[i] = dp[i-1] + dp[i-2] return dp[n] def Fibonacci(self , n: int) -> int: # write code here return self.p(n)
class Solution: def Fibonacci(self , n: int) -> int: if n == 1: return 1 else: a, b = 0, 1 for _ in range(2, n+1): a, b = b, a+b return b
牛客网会把 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