题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39
方法1:递归
采用递归算法时间复杂度比较大,有时候会超过给定的时间范围。因此类似题目提倡用动态规划思想。
【运行时间:923ms 占用内存:8656k】
public class Solution {
public int Fibonacci(int n) {
if(n==0) return 0;
if(n==1||n==2) return 1;
else return Fibonacci(n-1)+Fibonacci(n-2);
}
}
方法2:动态规划
【运行时间:12ms 占用内存:8312k】
采用动态规划思想,比递归实现起来要节省时间。(核心思想就是逐步推进)
public class Solution {
public int Fibonacci(int n) {
int num1=0;
int num2=1;
int result=0;
if(n<=0) return 0;
else if(n==1) return 1;
else{
for(int i=2;i<=n;i++){
result=num1+num2;
num1=num2;
num2=result;
}
return result;
}
}
}