Fibonacci数列
问题描述: Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当输入一个正整数n,输出
Fn的值
解决方法:
方法一(递归实现):代码简单,比较符合Fibonacci数列递推式的一种方法,但是当n太大时,程序耗时太长,容易崩溃!
public static int fibonacci(int n) {
if(n==1 || n==2) {
return 1;
} else {
return fibonacci(n-1)+fibonacci(n-2);
}
}
方法二(数组实现):采用循环的方法对数据进行计算,并将所得数据存入到数组中去方便取出
public static int fibonacci(int n) {
int[ ] fibo = new int[n+1 ];
fibo[1] = 1;
fibo[2] = 1;
for(int i = 3;i < fibo.length;i++) {
fibo[i] = fibo[i-1]+fibo[i-2];
}
return fibo[n];
}
方法三(迭代实现):采用迭代的方法对数据进行计算,直接将得到的最后答案返回!
public static int fibonacci(int n) {
int a = 1;
int b = 1;
int c = 0;
for(int i = 1; i <= n; i++) {
if(i < 3) {
c = 1;
} else {
c = a + b;
a = b;
b = c;
}
}
return c;
}