《剑指offer》----斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
解题思路
- (n≧2)
用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出。首几个费波那契系数是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……(来自维基百科)
如果用递归来实现的话会有大量的重复计算,例如计算 f(10) 需要计算 f(9) 和 f(8),计算 f(9) 需要计算 f(8) 和 f(7),可以看到 f(8) 被重复计算了。
根据定义可知,如果求第n项的(n>2)话,只需知道第n-1项和第n-2项便可。
源码
public class Solution {
public int Fibonacci(int n) {
if(n<2){
return n;
}
int pre1=0,pre2=1;
int result=0;
for(int i=2;i<=n;i++){
result=pre1+pre2;
pre1=pre2;
pre2=result;
}
return result;
}
}