【题目描述】大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39
【分析】
1. 斐波那契序列满足:
F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
2. 如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
【解题思路1】
//1. 利用通项公式来解答
public class Solution {
public int Fibonacci(int n) {
if(n==1 || n==2 ){
return 1;
}else{
double temp = Math.sqrt(5);
int res = (int)((1/temp)*(Math.pow((temp+1)/2, n)-Math.pow((1-temp)/2,n)));
return res;
}
}
}
【解题思路2】
//1. 利用之前的归纳公式,记录F(n-1)和F(n-2)。然后循环求解。
//2. 单纯的递归,在遇到大的测试用例时,容易溢出 。
public class Solution {
public int Fibonacci(int n) {
int preNum=1;
int prePreNum=0;
int result=0;
if(n==0)
return 0;
if(n==1)
return 1;
for(int i=2;i<=n;i++){
result=preNum+prePreNum;
prePreNum=preNum;
preNum=result;
}
return result;
}
}