斐波那契数列
1.暴力递归
2.去重递归
3.双指针迭代
package leetcode;
public class FeiBo {
public static void main(String[] args) {
System.out.println(calculate(10));
System.out.println(calculate2(10));
System.out.println(calculate3(10));
}
public static int calculate(int num) {
if(num == 0) {
return 0;
}
if(num == 1) {
return 1;
}
return calculate(num-1)+calculate(num-2);
}
public static int calculate2(int num) {
int[] arr = new int[num+1];
return rescure(arr,num);
}
public static int rescure(int[] arr,int num) {
if(num == 0) {
return 0;
}
if(num == 1) {
return 1;
}
if(arr[num] != 0) {
return arr[num];
}
return rescure(arr,num-1) + rescure(arr,num-2);
}
public static int calculate3(int num) {
if(num == 0) {
return 0;
}
if(num == 1) {
return 1;
}
int low = 0;
int high = 1;
int sum = 0;
for(int i = 2;i <= num;i++) {
sum= low + high;
low = high;
high = sum;
}
return high;
}
}