注:斐波那契数列就是形如0 1 1 2 3 5 8 13…的数列,第n项等于n-1项与n-2项之和。
一、求斐波那契数列第n项
解法1:递归方法,代码简洁,但是如果n过大,效率就很低
public long Fibonacci(int n){
if(n<=0){
return 0;
}
if(n==1){
return 1;
}
return Fibonacci(n-1)+Fibonacci(n-2);
}
解法2:类推法,由前两项求出第三项,效率高。时间复杂度O(n)
public int Fibonacci2(int n){
int[] result={1,2};
if (n < 2) {
return result[n];
}
int F0=0;
int F1=1;
int FN=0;
for(int i=1;i<=n;++i){
FN=F0+F1;
F1=F0;
F0=FN;
}
return FN;
}
二、输入一个数N,求出最少需要多少步可以变为斐波那契数
public static void fbMinStep(){
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int f0=0;
int f1=1;
if(n<=1){
System.out.println(0);
return;
}
while(true){
int tem=f0;
f0=f1;
f1=tem+f1;
if(n>f0&&n<=f1){
int step=Math.min(n-f0,f1-n);
System.out.println(step);
return;
}
}
}