题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39
解题思路
这道题也是有两种解法,第一种就是递归,这个必须要找到方法,不然也是GG,方法就是一行公式,F(n) = 3 * F(n - 3) + 2 * F(n - 4) n >= 4, 第二种解法就是循环,用两个指针来记录前面和前面前面的数,话不多说,来代码吧!
1)递归思路 time : 15ms space : 9096k
public class Solution {
public int Fibonacci(int n) {
if(n == 0) return 0;
if(n == 1 || n == 2) return 1;
if(n == 3) return 2;
return 3 * Fibonacci(n - 3) + 2 * Fibonacci(n - 4);
}
}
2)循环思路 time : 13ms space : 9420k
public class Solution {
public int Fibonacci(int n) {
int preNum = 1; // 前面的指针
int prePreNum = 0; // 前面的前面的指针
int result = 0;
if(n == 0) return prePreNum;
if(n == 1) return preNum;
for(int i = 2; i <= n; i++){
// 每次循环交替更换指针
result = preNum + prePreNum;
prePreNum = preNum;
preNum = result;
}
return result;
}
}
以上就是这道题的解法