剑指Offer7:裴波那契数列
1.题目
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39
2.思路
①:最直接常见的想法就是递归,然后从上往下返回,但是很浪费时间和空间,重复计算很对没用的数据
②:从小往大迭代可以避免资源浪费
3.代码
- ① 从上往下调用(c++)
class Solution {
public:
int Fibonacci(int n) {
if(n == 0){
return 0;
}
if(n == 1){
return 1;
}
int result = Fibonacci(n-1) + Fibonacci(n-2);
return result;
}
};
- 效果:
执行用时 :20 ms, 在所有 cpp 提交中击败了20.27%的用户
内存消耗 :8.1 MB, 在所有 cpp 提交中击败了92.85%的用户
- ② 迭代
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n <= 0:
return 0
if n == 1:
return 1
a = 0
b = 1
c = 0
if n >=2:
for i in range(1, n):
c = a + b
a = b
b = c
return c
效果:
执行用时 :16 ms, 在所有 python 提交中击败了88.38%的用户
内存消耗 :11.7 MB, 在所有 python 提交中击败了37.18%的用户