package feibo;
public class Fei {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(cansoul(10));
System.out.println("+++++++++");
System.out.println(calculate(10));
}
static int cansoul(int nums){
if(nums==0){
return 0;
}
if(nums==1){
return 1;
}
return cansoul(nums-1)+cansoul(nums-2);
}
//这样写太费时间了 被调用好多次
//改进 去重递归
public static int calculate(int num){
int[] arr=new int[num+1];// 下标从零开始的
return recurce(arr,num);
}
public static int recurce(int[] arr,int num){
if(num==0){
return 0;
}
if(num==1){
return 1;
}
if(arr[num]!= 0){//这一步是判定是否里面有值了 有值就不用加了
return arr[num];
}
//没有值就+
return recurce(arr,num-1)+recurce(arr,num-2);
}
}
一个是暴力递归 一个是优化的递归