描述
现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1。
斐波那契数列(Fibonacci):
指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:
①考虑给的整数是不是非负数,非负数的情况下返回None。
②因为递推的公式中有一个,只有当n>2的时候才有意义,所以n=0和1的情况需要单独定义。
③这是B站一个up主的答案,我觉得很适合理解,递归版本因为时间复杂度为所以这里就不写啦。
class Solution:
def Fibonacci(self, n):
if n < 0:
return None
if n == 0:
return 0
if n == 1:
return 1
a = 1
b = 0
ret = 0
for i in range(0, n-1):
ret = a + b
b = a
a = ret
return ret
还有一个讨论组的C++动态规划版:(动态规划记得学!)
class Solution {
public:
int Fibonacci(int n) {
int f = 0, g = 1;
while(n-->0) {
g += f;
f = g - f;
}
return f;
}
};