题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
思路:递归解法很简单
public class Solution {
public static int Fibonacci(int n) {
return n<=1?n:(Fibonacci(n-1)+Fibonacci(n-2));
}
public static void main(String[] args){
int n=10;
System.out.println(Fibonacci(n));
}
}
在牛客网提交会提示运行超时,递归在效率上不可取,里面包含很多重复计算。
通过循环方式解决。可以先求出f1,f2,根据f3=f1+f2,得到f3,然后把f2的值赋值给f1,f3的值赋值给f2,…,循环下去,直到fn,
牛客网提交成功的代码:
public class Solution {
public static int Fibonacci(int n) {
//return n<=1?n:(Fibonacci(n-1)+Fibonacci(n-2));
if(n<=1)return n;
int fibOne=0;
int fibTwo=1;
int result=0;
for(int i=2;i<=n;i++){
result=fibOne+fibTwo;
fibOne=fibTwo;
fibTwo=result;
}
return result;
}
public static void main(String[] args){
int n=10;
System.out.println(Fibonacci(n));
}
}