2级C中一题不懂解决方法

2级C中一题不懂
int fun(int s1,s2)
{
  int i,j;
  i=s2%10;
  j=s2/10;
  if(s2<10)
  return s2;
  s1=s1*10+i;
  fun(s1,j);
  return(s1);
}
void main(0
{
  printf("%d",fun(0,5678));
}
答案为8. fun(s1,j);这一句函数调用不理解,求解释。


------解决方案--------------------
递归调用的函数参数传递是按值传递,返回值又没处理,完全没起作用,空跑了,迷惑性的。
------解决方案--------------------
明白一句话,返回的S1是你第一次调用的时候的s1由于fun()是值传递,不会修改s1所以s1就是第一次调用的s1就是8