好久没更了,终于快结束实习了,实习期间的东西过几天再更。
斐波那契数列是什么就不说了,直接上代码,用了两种方法,大多数人第一反应的解题思路--递归,以及常规解法。
递归如下:
public class Solution {
public int Fibonacci(int n) {
if(n == 0)
return 0;
else if(n == 1)
return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
常规解法,剑指书上的推荐解法。为什么要用这种解法呢,自然就是因为递归时有可能很多计算都是重复的,递归调用的层数太多时,还有可能会出现调用栈溢出的问题。代码如下:
public class Solution {
public int Fibonacci(int n) {
int[] result = {0,1};
if(n<2)
return result[n];
int FibMinusOne = 1;
int FibMinusTwo = 0;
int FibN = 0;
for(int i=2; i<=n ; ++i){
FibN = FibMinusOne + FibMinusTwo;
FibMinusTwo = FibMinusOne;
FibMinusOne = FibN;
}
return FibN;
}
}