对第n位菲波那切数列的值进行求解
菲波那切数列
(1)递归方法实现
//递归实现斐波那契数列
public static int calculateOne(int num) {
if(num==0)return 0;
if(num==1)return 1;
return calculateOne(num-1)+calculateOne(num-2);
}
(2)去重递归方法实现
//去重递归的方法实现菲波那切数列
public static int calculateTwo(int num) {
int [] array = new int [num+1];
return getRecurse(num, array);
}
public static int getRecurse(int num, int[] array) {
if(num==0)return 0;
if(num==1)return 1;
if(array[num]!=0)return array[num];
array[num]=getRecurse(num-1,array)+getRecurse(num-2,array);
return array[num];
}
(3)双指针方法实现
//双指针实现菲波那切数列数列的计算
private static int calculateThree(int num) {
if(num==0)return 0;
if(num==1)return 1;
int low = 0,high=1;
for(int i = 2;i<=num;i++)
{
int sum = low + high;
low = high;
high = sum;
}
return high;
}
(4)递推方法实现
//递推的方法实现菲波那切数列
public static int calculateFour(int num) {
int []array = new int [num+1];
if(num==0)return 0;
if(num==1)return 1;
array[0]=0;
array[1]=1;
for(int i =2;i<=num;i++)
{
array[i]=array[i-1]+array[i-2];
}
return array[num];
}