1.本题知识点
递归,循环
2. 题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39
3. 思路
如图,可以用递归自顶向下计算,或者自底向上计算。
Java 递归自顶向下版:
public class Solution {
public int Fibonacci(int n) {
if(n < 1) return 0;
if(n < 3) return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
如果用递归自顶向下计算,我们发现有很多重复计算,比如f(8),f(7),f(6)等,效率比较差。
Java自底向上版:
public class Solution {
public int Fibonacci(int n) {
int [] result = {0,1};
if(n < 2) return result[n];
int fibNMinusOne = 1;
int fibNMinusTwo = 0;
int fibN = 0;
for(int i = 2; i <= n; i++){
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
}
}