xhm_hm
我的理解如下:(如有错误请谅解,并告知)一层执行到fun(6-1,&f1);停止,执行二层fun(6-1,&f1),也就是fun(5,&f1)。二层执行到fun(5-1,&f1);停止,执行三层fun(4,&f1);三层执行到fun(4-1,&f1);停止,执行四层fun(3,&f1);四层执行到fun(3-1,&f1);停止,执行五层fun(2,&f1);五层执行到if(n==1||n==2) f1=1;返回到四层fun(3-1,&f1)的位置;四层执行fun(3-2,&f2),返回f2=1;执行*s=f1+f2;s=2,即f1=2返回到第三层fun(4-1,&f1)的位置;三层执行fun(4-2,&f2),返回f2=1;执行*s=f1+f2;s=3,即f1=3返回到第二层fun(5-1,&f1)的位置;二层执行fun(5-2,&f2),执行fun(3-1,&f1),返回f1=1,执行fun(3-2,&f2)返回f2=1;执行*s=f1+f2;s=2,即返回f2=2,执行*s=f1+f2;s=5,即f1=5返回到第一层fun(6-1,&f1)的位置;一层执行fun(6-2,&f2),执行fun(4-1,&f1),执行fun(3-1,&f1),返回f1=1;执行fun(3-2,&f2),返回f2=1,执行*s=f1+f2;s=2;返回f1=2;执行fun(4-2,&f2),返回f2=1;再执行fun(4-2,&f2)后的*s=f1+f2;s=3;即返回f2=3;最后执行fun(6-2,&f2)后的*s=f1+f2;s=8;