//递归,一列数的规则如下: 1、1、2、3、5、8、13、21、34 ,求第30位数是多少?使用递归实现
//F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
public class Test {
public static void main(String[] args) {
int i =Fibonacci2(30);
System.out.println(i);
}
//递归方法
static int Fibonacci1(int n) {
//出口
if(n<=2) {
return 1;
}
return Fibonacci1(n-1)+Fibonacci1(n-2);
}
//常规方法
private static int Fibonacci2(int n){
int result = 1; //当n<=2时都返回1
if (n > 2) //当n>2时,利用循环计算
{
int first = 1;
int second = 1;
int i = 0;
n = n - 2; //每次当然要减少两次循环
while (i < n)
{
first = second;
second = result;
result = first + second;
i++;
}
}
return result;
}
}