Merhaba arkadaşlar. Aşağıdaki kodun mantığı nedir ve sonuç neden 11 çıkar.

int foo(int n) {
if (n != 0)
if (n%2==0)
return n + foo(n-1);
else
return n - foo(n-1);
else
return n;
}

foo(10);

****************
Şimdi burada n=10 oluyor ve return 10 + foo(9) satırını nasıl toplayacağız ki?