1、递归算法。
public static int sum(int n){
count++;
if(n<2){
return n;
}
return sum(n-1)+sum(n-2);
}
2、非递归算法
public static int sum1(int n){
int a=1;
int b =1;
int sum =0;
for(int i =2;i<n;i++){
sum=a+b;
a=b;
b=sum;
}
return sum;
}
3、运用栈
/**
* 递归替换成入栈算法
* @return
*/
public static int sum2(int n){
Stack<Integer> s = new Stack<>();
int sum=0;
if(n==1){
s.push(1);
}else{
s.push(n-1);
s.push(n-2);
}
//计算。
while(!s.isEmpty()){
count++;
Integer pop = s.pop();
if(pop<2){
sum+=pop;
}else{
s.push(pop-1);
s.push(pop-2);
}
}
return sum;
}