Java递归基础纳闷

Java递归基础疑惑

public class App {

private static int count;

public static int f(int x){
if(x == 0){
return 0;
}else{
count++;
return 2 * f(x - 1) + x * x;
}
}

public static void main(String[] args) {
System.out.println(f(3) + " c " + count);
}

}


我算的时候是:

2 * 2 + 3* 3 = 13
2 * 1 + 2 * 2 = 6
2 * 0 + 1 * 1 = 1

输出为20,但是一直输出21。.请问是如何去计算该递归程序,谢谢!
------解决思路----------------------
2*(2*(2*(2*0+0*0)+1*1)+2*2)+3*3
=2*(2*(2*0+1*1)+2*2)+3*3
=2*(2*1+2*2)+3*3
=2*6+3*3
=21
------解决思路----------------------
方法返回值是最后一次递归的返回值,而不是3次递归累加的

当x=0  f(0)=0
当x=1  f(1)=2*f(0)+1*1=1
当x=2  f(2)=2*f(1)+2*2=6
当x=3  f(3)=2*f(2)+3*3=21

------解决思路----------------------
f(3) = 2 * (f2) + 3 * 3;    (d)
f(2) = 2 * f(1) + 2 * 2;    (c)
f(1) = 2 * f(0) + 1 * 1;     (b)
f(0) = 0;                           (a)