您的位置:首页 > Web前端

07斐波那契数列–剑指offer, java版

2019-03-01 13:39 260 查看

07斐波那契数列–剑指offer, java版

题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。P75
n<=39
分析:
方法1:用递归

public class Solution {
public int Fibonacci(int n) {
if(n<=0) return 0;
if(n == 1) return 1;
return Fibonacci(n-1) + Fibonacci(n-2);
}
}

但是用递归的话,很多点会重复计算多次(如计算f(4)=f(3)+f(2),需f(3)=f(2)+f(1),又f(2)=f(1)+f(0),但其实f(3)、f(2)之前都已经算过了)时间复杂度太大。
方法2:从下往上计算,这样就不会计算多次了

public class Solution {
public int Fibonacci(int n) {
if(n < 0) {
System.out.println("wrong input");
return 0;
}
if(n == 0) return 0;
if(n == 1) return 1;
int fibOne = 0;
int fibTwo = 1;
int fibNum = 0;
for(int i = 2;i <= n; i++){
fibNum = fibOne + fibTwo;
fibOne = fibTwo;
fibTwo = fibNum;
}
return fibNum;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: