I am having a really hard time trying to grasp this concept. I understand the basics and can get the big O notation of simple algorithms but I need help with stuff a little more complex....specifically this one..

public static int fibEfficient(int n){
cntE++;

if(n<=2) return 1;
if(n==3)return 2;

else
return 2*(fibEfficient(n - 2)) + fibEfficient(n - 3);
}
can anyone tell me what it is, how to find it..PLEASE!!??