这是怎么运算出来的5

#include<stdio.h>
int fun(int x)
{
int p;
if (x == 0 || x == 1)return(3);
p = x - fun(x - 2);
return p;
}
int main()
{
printf("%d\n", fun(4));
return 0;
}

fun(4)
if不成立,执行p = 4-fun(4-2),return p;也就是说 fun(4) = 4-fun(2)
fun(2),if不成立,执行p=2-fun(0),return p; 也就是说 fun(2) = 2-fun(0)
fun(0),if成立,返回3,也就是fun(0)=3,然后带回上面的式子:
fun(2)=p=2-fun(0)=2-3=-1;
fun(4)=p=4-fun(2)=4-(-1)=5

p = x - fun(x - 2);
f(4)=4-f(2)
f(2)=2-f(0)
又因为,f(0)=3
所以f(4)=4-(2-f(0))=4-2+3=5

fun(4): x=4 return x - fun(x - 2)=4-fun(2) (fun(2)未知,计算fun(2))
fun(2): x=2 return x - fun(x - 2)=2-fun(0)
fun(0): x=0 return 3
fun(2)=2-fun(0)=2-3=-1
fun(4)=4-fun(2)=4-(-1)=5