题目:
查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
- 前2个数是 0 和 1 。
- 第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...
求第k个斐波那契数字的大小。
分析:可采用递归的方法,不过这种方法容易超时。
一、递归:
public int fibonacci3(int n){
if(n==1){
return 0;
}
if(n==2){
return 1;
}
return fibonacci3(n-2)+fibonacci3(n-1);
}
二、运算次数最少:
public int fibonacci1(int n){
if(n==1){
return 0;
}
if(n==2){
return 1;
}
int a=0;
int b=1;
int result=0;
for(int i=3;i<=n;i++){
result=a+b;
a=b;
b=result;
}
return result;
}