请记得一个函式执行完毕之后一定会回来继续执行下一行,所以每次invert执行完毕之后,一定会继续往下走到printf,就这样并不是执行了新的invert之后就不管三七二十一把之前的context取代掉,要这样的效果可以,但不是初学者会接触到的内容行,另外我觉得应该把递回当成是function call func的一种特例,如果有 code unrolling (展开) 的概念会更清楚,像这张图
https://imgur.com/28K5WPM如果按照这张图的方法把所有的invert展开,应该就一目了然了!你就想function只不过就是把一段code压缩起来,像zip档那样子,要执行到的时候再展开BTW,我觉得这种写法蛮有创意的,但以这个问题来说这绝对不是好解法