执行main:调用fun,传参(4、变量x地址)
首层fun :形参n=4,*s=x的地址(值0)。执行else{......}
首先函数递归调用自己,传参(4-1,首层变量f的地址),(*s=f这句要等前面递归完成才会执行)
递归1fun:形参n=3,*s=首层变量f的地址。执行else{......}
函数递归调用自己,传参(3-1,递归1变量f的地址)
递归2fun:形参n=2,*s=递归1变量f地址。执行else{......}
函数递归调用自己,传参(2-1,递归2变量f的地址)
递归3fun:形参n=1,*s=递归2变量f地址。执行*s=n+1;也就是递归2变量f的值变成2
此时递归完成,依次返回上层,继续执行对应的语句*s=f。
递归3完成后,递归2的变量f赋值2,然后返回递归2。
递归2执行*s=f,递归1的变量f赋值2。
递归1执行*s=f,首层变量f赋值2。
首层执行*s=f,变量x赋值2。
所以最后打印x的值2。
温馨提示:答案为网友推荐,仅供参考