一、题目描述
要求输入一个整数n,输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
输入:一个整数n
输出:斐波那契数列的第 n 项
二、思路分析
1、递归。效率低下,不推荐
2、循环,利用两个额外的空间存储中间变量。O(n)
三、实现代码
/**
* @author 0416
* @date 2019/11/17
* 两种解法
* 青蛙跳n个台阶的跳法 等同于 斐波那契数列fibonacci(n)
**/
public class Fibonacci {
/**
* Method one
* @param n
* @return
*/
public static int fibonacciWithRecursion(int n){
if(n <= 0){
return 0;
}
if(n == 1){
return 1;
}
return fibonacciWithRecursion(n - 1) + fibonacciWithRecursion(n - 2);
}
/**
* Method two
* @param n
* @return
*/
public static int fibonacciWithTwoTemp(int n){
if(n <= 0){
return 0;
}
if(n == 1){
return 1;
}
int oneTemp = 0;
int twoTemp = 1;
for (int i = 2; i <= n; i++) {
int temp = oneTemp + twoTemp;
oneTemp = twoTemp;
twoTemp = temp;
}
return twoTemp;
}
public static void main(String[] args) {
//fibonacci(13) = 233
int result1 = fibonacciWithRecursion(13);
System.out.println(result1);
int result2 = fibonacciWithTwoTemp(13);
System.out.println(result2);
}
}